• Jie Liu's avatar
    btrfs: fix file truncation if FALLOC_FL_KEEP_SIZE is specified · 7cddc193
    Jie Liu authored
    Create a small file and fallocate it to a big size with
    FALLOC_FL_KEEP_SIZE option, then truncate it back to the
    small size again, the disk free space is not changed back
    in this case. i.e,
    
    total 4
    -rw-r--r-- 1 root root 512 Jun 28 11:35 test
    
    Filesystem      Size  Used Avail Use% Mounted on
    ....
    /dev/sdb1       8.0G   56K  7.2G   1% /mnt
    
    -rw-r--r-- 1 root root 512 Jun 28 11:35 /mnt/test
    
    Filesystem      Size  Used Avail Use% Mounted on
    ....
    /dev/sdb1       8.0G  5.1G  2.2G  70% /mnt
    
    Filesystem      Size  Used Avail Use% Mounted on
    ....
    /dev/sdb1       8.0G  5.1G  2.2G  70% /mnt
    
    With this fix, the truncated up space is back as:
    Filesystem      Size  Used Avail Use% Mounted on
    ....
    /dev/sdb1       8.0G   56K  7.2G   1% /mnt
    Signed-off-by: default avatarJie Liu <jeff.liu@oracle.com>
    Signed-off-by: default avatarJosef Bacik <jbacik@fusionio.com>
    Signed-off-by: default avatarChris Mason <chris.mason@fusionio.com>
    7cddc193
inode.c 230 KB