Hi all, this question is more out of curiosity and because I want to take the chance to learn something. At work we've stumbled over a workload that seems to hit pathological performance on XFS. Basically the critical part of the workload is a "rm -rf" of a pretty large directory tree, filled with files of mixed size ranging from a few KB to a few MB. The filesystem resides on quite slow spinning rust disks, directly attached to the host, so no controller with a BBU or something like that involved. We've tested the workload with both xfs and ext4, and while the numbers aren't completely accurate due to other factors playing into the runtime, performance difference between XFS and ext4 seems to be an order of magnitude. (Ballpark runtime XFS is 30 mins, while ext4 handles the remove in ~3 mins). The XFS performance seems to be completly dominated by log buffer writes, which happen with both REQ_PREFLUSH and REQ_FUA set. It's pretty obvious why this kills performance on slow spinning rust. Now the thing I wonder about is why ext4 seems to get a away without those costly flags for its log writes. At least blktrace shows almost zero PREFLUSH or FUA requests. Is there some fundamental difference in how ext4 handles its logging to avoid the need for this ordering and forced access, or is it ext just living more dangerously with regard to reordered writes? Does XFS really require such a strong ordering on the log buffer writes? I don't understand enough of the XFS transaction code and wonder if it would be possible to do the strongly ordered writes only on transaction commit. Regards, Lucas