• Mingming Cao's avatar
    ext4: Fix delalloc release block reservation for truncate · cd213226
    Mingming Cao authored
    Ext4 will release the reserved blocks for delayed allocations when
    inode is truncated/unlinked.  If there is no reserved block at all, we
    shouldn't need to do so.  But current code still tries to release the
    reserved blocks regardless whether the counters's value is 0.
    Continue to do that causes the later calculation to go wrong and a
    kernel BUG_ON() caught that. This doesn't happen for extent-based
    files, as the calculation for 0 reserved blocks was right for extent
    based file.
    
    This patch fixed the kernel BUG() due to above reason.  It adds checks
    for 0 to avoid unnecessary release and fix calculation for non-extent
    files.
    Signed-off-by: default avatarMingming Cao <cmm@us.ibm.com>
    Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
    cd213226
inode.c 135 KB