xfs
[Top] [All Lists]

Re: [PATCH 5/7] xfs: honor the O_SYNC flag for aysnchronous direct I/O r

To: Dave Chinner <david@xxxxxxxxxxxxx>
Subject: Re: [PATCH 5/7] xfs: honor the O_SYNC flag for aysnchronous direct I/O requests
From: Jeff Moyer <jmoyer@xxxxxxxxxx>
Date: Fri, 30 Mar 2012 15:45:37 -0400
Cc: linux-fsdevel@xxxxxxxxxxxxxxx, linux-ext4@xxxxxxxxxxxxxxx, xfs@xxxxxxxxxxx, jack@xxxxxxx, hch@xxxxxxxxxxxxx
In-reply-to: <x49y5qii1mx.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> (Jeff Moyer's message of "Fri, 30 Mar 2012 10:50:30 -0400")
References: <1333058705-31512-1-git-send-email-jmoyer@xxxxxxxxxx> <1333058705-31512-6-git-send-email-jmoyer@xxxxxxxxxx> <20120329225743.GC18323@dastard> <x49y5qii1mx.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
User-agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.1 (gnu/linux)
Jeff Moyer <jmoyer@xxxxxxxxxx> writes:

> Hi, Dave,
>
> Thanks for the review!
>
>> or better still, factor xfs_file_fsync() so that it calls a helper
>> that doesn't wait for data IO completion, and call that helper here
>> too. The semantics of fsync/fdatasync are too complex to have to
>> implement and maintain in multiple locations....
>
> I definitely agree with consolidating things.  However, there are four
> blocking calls in xfs_file_fsync (filemap_write_and_wait_range,
> xfs_blkdev_issue_flush, _xfs_log_force_lsn, and another call to
> xfs_blkdev_issue_flush).  How would you propose to make that
> non-blocking given that those steps have to happen in sequence?

OK, so re-reading your mail, I think you meant to just factor out
everything except the filemap_write_and_wait_range.  Here are a couple
of patches which do that.  Also, since we're not worried about blocking
in the endio processing, just making things synchronous makes the code a
lot simpler.  Let me know what you think of the attached two patches
(which I've already run through xfstests).

Thanks!
Jeff

Attachment: xfs-factor-out-xfs-file-fsync.patch
Description: Text document

Attachment: xfs-flush-disk-cache-for-aio-dio-osync-writes.patch
Description: Text document

<Prev in Thread] Current Thread [Next in Thread>