Searched hist:c8afb44682fcef6273e8b8eb19fab13ddd05b386 (Results 1 – 1 of 1) sorted by relevance
/openbmc/linux/fs/ext4/ |
H A D | inode.c | diff c8afb44682fcef6273e8b8eb19fab13ddd05b386 Wed Dec 23 06:58:12 CST 2009 Eric Sandeen <sandeen@redhat.com> ext4: flush delalloc blocks when space is low
Creating many small files in rapid succession on a small filesystem can lead to spurious ENOSPC; on a 104MB filesystem:
for i in `seq 1 22500`; do echo -n > $SCRATCH_MNT/$i echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX > $SCRATCH_MNT/$i done
leads to ENOSPC even though after a sync, 40% of the fs is free again.
This is because we reserve worst-case metadata for delalloc writes, and when data is allocated that worst-case reservation is not usually needed.
When freespace is low, kicking off an async writeback will start converting that worst-case space usage into something more realistic, almost always freeing up space to continue.
This resolves the testcase for me, and survives all 4 generic ENOSPC tests in xfstests.
We'll still need a hard synchronous sync to squeeze out the last bit, but this fixes things up to a large degree.
Signed-off-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
|