• J
    btrfs: Ensure proper sector alignment for btrfs_free_reserved_data_space · 0c476a5d
    Jeff Mahoney 提交于
    This fixes the WARN_ON on BTRFS_I(inode)->reserved_extents in
    btrfs_destroy_inode and the WARN_ON on nonzero delalloc bytes on umount
    with qgroups enabled.
    
    I was able to reproduce this by setting up a small (~500kb) quota limit
    and writing a file one byte at a time until I hit the limit.  The warnings
    would all hit on umount.
    
    The root cause is that we would reserve a block-sized range in both
    the reservation and the quota in btrfs_check_data_free_space, but if we
    encountered a problem (like e.g. EDQUOT), we would only release the single
    byte in the qgroup reservation.  That caused an iotree state split, which
    increased the number of outstanding extents, in turn disallowing releasing
    the metadata reservation.
    Signed-off-by: NJeff Mahoney <jeffm@suse.com>
    Reviewed-by: NQu Wenruo <quwenruo@cn.fujitsu.com>
    Signed-off-by: NDavid Sterba <dsterba@suse.com>
    0c476a5d
extent-tree.c 304.9 KB