| To: | Jan Kara <jack@xxxxxxx> |
|---|---|
| Subject: | Re: [PATCH 2/3] ext4: honor the O_SYNC flag for aysnchronous direct I/O requests |
| From: | Jeff Moyer <jmoyer@xxxxxxxxxx> |
| Date: | Wed, 08 Feb 2012 10:11:47 -0500 |
| Cc: | linux-ext4@xxxxxxxxxxxxxxx, xfs@xxxxxxxxxxx, linux-fsdevel@xxxxxxxxxxxxxxx |
| In-reply-to: | <20120202173120.GA6640@xxxxxxxxxxxxx> (Jan Kara's message of "Thu, 2 Feb 2012 18:31:20 +0100") |
| References: | <1327698949-12616-1-git-send-email-jmoyer@xxxxxxxxxx> <1327698949-12616-3-git-send-email-jmoyer@xxxxxxxxxx> <20120202173120.GA6640@xxxxxxxxxxxxx> |
| User-agent: | Gnus/5.110011 (No Gnus v0.11) Emacs/23.1 (gnu/linux) |
Jan Kara <jack@xxxxxxx> writes: > Look at what ext4_sync_file() does. It's more efficient than this. > You need something like: > commit_tid = file->f_flags & __O_SYNC ? EXT4_I(inode)->i_sync_tid : > EXT4_I(inode)->i_datasync_tid; > if (journal->j_flags & JBD2_BARRIER && > !jbd2_trans_will_send_data_barrier(journal, commit_tid)) > needs_barrier = true; > jbd2_log_start_commit(journal, commit_tid); > jbd2_log_wait_commit(journal, commit_tid); > if (needs_barrier) > blkdev_issue_flush(inode->i_sb->s_bdev, GFP_NOIO, NULL); If the transaction won't send a data barrier, wouldn't you want to issue the flush on the data device prior to commiting the transaction, not after it? -Jeff |
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | Re: [PATCH v2 2/2] xfstests: introduce 280 for SEEK_DATA/SEEK_HOLE copy check, Jeff Liu |
|---|---|
| Next by Date: | Re: [PATCH 3/3] filemap: don't call generic_write_sync for -EIOCBQUEUED, Jan Kara |
| Previous by Thread: | Re: [PATCH 2/3] ext4: honor the O_SYNC flag for aysnchronous direct I/O requests, Jan Kara |
| Next by Thread: | Re: [PATCH 2/3] ext4: honor the O_SYNC flag for aysnchronous direct I/O requests, Jan Kara |
| Indexes: | [Date] [Thread] [Top] [All Lists] |