• E
    ext4: fix partial cluster initialization · f4226d9e
    Eric Whitney 提交于
    The partial_cluster variable is not always initialized correctly when
    hole punching on bigalloc file systems.  Although commit c0634493
    ("ext4: fix partial cluster handling for bigalloc file systems")
    addressed the case where the right edge of the punched region and the
    next extent to its right were within the same leaf, it didn't handle
    the case where the next extent to its right is in the next leaf.  This
    causes xfstest generic/300 to fail.
    
    Fix this by replacing the code in c0634493922 with a more general
    solution that can continue the search for the first cluster to the
    right of the punched region into the next leaf if present.  If found,
    partial_cluster is initialized to this cluster's negative value.
    There's no need to determine if that cluster is actually shared;  we
    simply record it so its blocks won't be freed in the event it does
    happen to be shared.
    
    Also, minimize the burden on non-bigalloc file systems with some minor
    code simplification.
    Signed-off-by: NEric Whitney <enwlinux@gmail.com>
    Signed-off-by: NTheodore Ts'o <tytso@mit.edu>
    f4226d9e
extents.c 155.9 KB