• Theodore Ts'o's avatar
    ext4: if zeroout fails fall back to splitting the extent node · 308c57cc
    Theodore Ts'o authored
    If the underlying storage device is using thin-provisioning, it's
    possible for a zeroout operation to return ENOSPC.
    
    Commit df22291f ("ext4: Retry block allocation if we have free blocks
    left") added logic to retry block allocation since we might get free block
    after we commit a transaction. But the ENOSPC from thin-provisioning
    will confuse ext4, and lead to an infinite loop.
    
    Since using zeroout instead of splitting the extent node is an
    optimization, if it fails, we might as well fall back to splitting the
    extent node.
    Reported-by: default avataryangerkun <yangerkun@huawei.com>
    Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
    308c57cc
extents.c 164 KB