On 08/01/17 19:34, Austin S. Hemmelgarn wrote: [..] > Apparently, if you call fallocate() on a file with an offset of 0 and > a length longer than the length of the file itself, BTRFS will > allocate that exact amount of space, instead of just filling in holes > in the file and allocating space to extend it. If there isn't enough > space on the filesystem for this, then it will fail, even though it > would succeed on ext4, XFS, and F2FS. [..] > I'm curious to hear anybody's thoughts on this, namely: 1. Is this > behavior that should be considered implementation defined? 2. If not, > is my assessment that BTRFS is behaving incorrectly in this case > accurate? IMHO no and yes, respectively. Both fallocate(2) and posix_fallocate(3) make it very clear that the expected default behaviour is to extend. I don't think this can be interpreted in any other way than incorrect behaviour on behalf of btrfs. Your script reproduces for me, so that's a start. -h