xfs
[Top] [All Lists]

Re: [PATCH 2/3] ext4: honor the O_SYNC flag for aysnchronous direct I/O

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>