• Josef Bacik's avatar
    Btrfs: move btrfs_truncate_page to btrfs_cont_expand instead of btrfs_truncate · a71754fc
    Josef Bacik authored
    This has plagued us forever and I'm so over working around it.  When we truncate
    down to a non-page aligned offset we will call btrfs_truncate_page to zero out
    the end of the page and write it back to disk, this will keep us from exposing
    stale data if we truncate back up from that point.  The problem with this is it
    requires data space to do this, and people don't really expect to get ENOSPC
    from truncate() for these sort of things.  This also tends to bite the orphan
    cleanup stuff too which keeps people from mounting.  To get around this we can
    just move this into btrfs_cont_expand() to make sure if we are truncating up
    from a non-page size aligned i_size we will zero out the rest of this page so
    that we don't expose stale data.  This will give ENOSPC if you try to truncate()
    up or if you try to write past the end of isize, which is much more reasonable.
    This fixes xfstests generic/083 failing to mount because of the orphan cleanup
    failing.  Thanks,
    Signed-off-by: default avatarJosef Bacik <jbacik@fusionio.com>
    a71754fc
inode.c 230 KB