On Wed, May 25, 2016 at 10:51:34AM -0400, Josef Bacik wrote:
> Traditionally we've calculated the global block rsv by guessing how much of the
> metadata used amount was the extent tree, and then taking the data size and
> figuring out how large the csum tree would have to be to hold that much data.
>
> This is imprecise and falls down on MIXED file systems as we can't trust the
> data used amount. This resulted in failures for xfstests generic/333 because it
> creates lots of clones, which explodes out the extent tree. Our global reserve
> calculations were woefully inaccurate in this case which meant we got into a
> situation where we did not have enough reserved to do our work.
>
> We know we only use the global block rsv for the extent, csum, and root trees,
> so just get the bytes used for these trees and use that as the basis of our
> global reserve. Since these are not reference counted trees the bytes_used
> value will be accurate. This fixed the transaction aborts seen with
> generic/333. Thanks,
The abort is gone, the fstest fails with
generic/333 - output mismatch (see results//generic/333.out.bad)
--- tests/generic/333.out 2016-04-08 11:50:13.000000000 +0200
+++ results//generic/333.out.bad 2016-05-25 23:30:50.965956265 +0200
@@ -2,3 +2,4 @@
Format and mount
Initialize file
Snapshot a file undergoing directio rewrite
+touch: cannot touch '/mnt/scratch/test-333/finished': No space left on device
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html