Great.1. Could we use fdatasync there? (otherwise it can hurt performance veryI don't see why not.
badly)
yes, my bad2. vfs_sync() is synchronous. loop_thread() will be blocked till it'sIf more than one REQ_FLUSH bio is in the list, they should be performed
completed. Would it be better to perform vfs_sync in another thread (to
allow other bio-s in loop queue proceed)? Also, if there are more than
one REQ_FLUSH bio in lo->lo_bio_list, we could call vfs_sync() only
once. Make sense?
in order. We must call vfs_fsync() between each of them to guarantee that.
A less complex tradeoff would be to move the vfs_fsync() call toCompletely agree, it can be done later.
loop_make_request() so it is called in the context of the thread making
the request. That would make those threads requesting ordered IO to pay
the price while others would be able to proceed.
This is something I can re-visit. I don't want to hold up progress on
the patchset for something that can be improved later.