Hi all, Here's a bunch of crazy fixes that I've been working on. The first one tries to solve the fragmentation problems that Dave reported[1] in the stupidest way possible. Namely, we only ever trim post-eof speculative preallocations the /first/ time that we close a file, regardless of the dirty state. The second patch tries to fix a stale data exposure bug revealed by generic/042. It does this by changing xfs to convert delalloc extents to unwritten extents and only converting those into real extents once the data write succeeds. We already do this for the cow fork, so it seems pretty straightforward to do the same for the data fork. The third patch adds instrumentation to make it easier to detect when we roll a transaction beyond the initial logcount, and therefore are having to reserve more log space. The fourth patch effectively increases the number of times we can roll an end_cow transaction without having to go back for more reservation. This is intended to fix the problem outlined in [2] which will fix the periodic xfs/347 deadlocks. [1] https://marc.info/?l=linux-xfs&m=154951612101291&w=2 [2] https://marc.info/?l=linux-xfs&m=155241472431249&w=2 If you're going to start using this mess, you probably ought to just pull from my git trees, which are linked below. This is an extraordinary way to destroy everything. Enjoy! Comments and questions are, as always, welcome. --D kernel git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-linux.git/log/?h=rough-fixes