Bigalloc ENOSPC woes
I got nervous when I tried this on an -O bigalloc -C 65536 fs:
# echo foo > blah; du -hc blah; sync; du -hc blah 4.0K blah 4.0K total 64K blah 64K total
Seems that du should never report less than the cluster size, should it?
And that made me wonder about ENOSPC handling - are we tracing delalloc allocations correctly?
Quoted 1 line
From running xfstest 204 on a similarly-created fs, it really seems that we are not.
A manual test of creating 4-byte files until ENOSPC (which was really when I ran out of inodes) and then issuing a sync led to a storm of kernel messages about allocation failures:
[ 482.154538] EXT4-fs (sdb6): delayed block allocation failed for inode 1664 at logical offset 0 with max blocks 1 with error -28 [ 482.154540] EXT4-fs (sdb6): This should not happen!! Data will be lost
<ad infinitum, or at least 600 or so in my case>
and an end result of a bunch of 4 byte long files with no extents. Almost like files full of NULLs. Careful - that is hard to live down. :)
Ted, are you aware of those issues in bigalloc?
-Eric
Quoted 9 lines · Eric Sandeen
I got nervous when I tried this on an -O bigalloc -C 65536 fs:
# echo foo > blah; du -hc blah; sync; du -hc blah 4.0K blah 4.0K total 64K blah 64K totalSeems that du should never report less than the cluster size, should it?
Yes, that seems like a bug.
Quoted 7 lines
And that made me wonder about ENOSPC handling - are we tracing delalloc allocations correctly?
From running xfstest 204 on a similarly-created fs, it really seems that we are not....
Ted, are you aware of those issues in bigalloc?
No, this is news to me. I'll have to take a closer look at this; thanks for bring this up.
- Ted
Quoted 9 lines · Eric Sandeen
I got nervous when I tried this on an -O bigalloc -C 65536 fs:
# echo foo > blah; du -hc blah; sync; du -hc blah 4.0K blah 4.0K total 64K blah 64K totalSeems that du should never report less than the cluster size, should it?
It is a bug and the corresponding fix is sent with the subject "ext4:
let getattr report the right blocks in delalloc+bigalloc."
Quoted 5 lines
And that made me wonder about ENOSPC handling - are we tracing delalloc allocations correctly?
From running xfstest 204 on a similarly-created fs, it really seems that we are not.
Quoted 8 lines
A manual test of creating 4-byte files until ENOSPC (which was really when I ran out of inodes) and then issuing a sync led to a storm of kernel messages about allocation failures:
[ 482.154538] EXT4-fs (sdb6): delayed block allocation failed for inode 1664 at logical offset 0 with max blocks 1 with error -28 [ 482.154540] EXT4-fs (sdb6): This should not happen!! Data will be lost<ad infinitum, or at least 600 or so in my case>
and an end result of a bunch of 4 byte long files with no extents. Almost like files full of NULLs. Careful - that is hard to live down. :)
yeah, I can reproduce it easily and more investigation is needed here.
Thanks
Tao
Quoted 8 lines
Ted, are you aware of those issues in bigalloc?
-Eric
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html