• Miao Xie's avatar
    Btrfs: fix the free space write out failure when there is no data space · 9dced186
    Miao Xie authored
    After running space balance on a new fs, the fs check program outputed the
    following warning message:
     free space inode generation (0) did not match free space cache generation (20)
    
    Steps to reproduce:
     # mkfs.btrfs -f <dev>
     # mount <dev> <mnt>
     # btrfs balance start <mnt>
     # umount <mnt>
     # btrfs check <dev>
    
    It was because there was no data space after the space balance, and the free
    space write out task didn't try to allocate a new data chunk for the free space
    inode when doing the reservation. So the data space reservation failed, and in
    order to tell the free space loader that this free space inode could not be
    trusted, the generation of the free space inode wasn't updated. Then the check
    program found this problem and outputed the above message.
    
    But in fact, it is safe that we try to allocate a new data chunk when we find
    the data space is not enough. The patch fixes the above problem by this way.
    Signed-off-by: default avatarMiao Xie <miaox@cn.fujitsu.com>
    Signed-off-by: default avatarJosef Bacik <jbacik@fusionio.com>
    Signed-off-by: default avatarChris Mason <chris.mason@fusionio.com>
    9dced186
extent-tree.c 237 KB