Dave Chinner <david@xxxxxxxxxxxxx> writes: > Further, REQ_FLUSH/REQ_FUA are more than just "put the data on stable > storage" commands. They are also IO barriers that affect scheduling > of IOs in progress and in the request queues. A REQ_FLUSH/REQ_FUA > IO cannot be dispatched before all prior IO has been dispatched and > drained from the request queue, and IO submitted after a queued > REQ_FLUSH/REQ_FUA cannot be scheduled ahead of the queued > REQ_FLUSH/REQ_FUA operation. > > IOWs, REQ_FUA/REQ_FLUSH not only guarantee data is on stable > storage, they also guarantee the order of IO dispatch and > completion when concurrent IO is in progress. This hasn't been the case for several years, now. It used to work that way, and that was deemed a big performance problem. Since file systems already issued and waited for all I/O before sending down a barrier, we decided to get rid of the I/O ordering pieces of barriers (and stop calling them barriers). See commit 28e7d184521 (block: drop barrier ordering by queue draining). Cheers, Jeff -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html