• Tahsin Erdogan's avatar
    ext4: eliminate xattr entry e_hash recalculation for removes · daf83281
    Tahsin Erdogan authored
    When an extended attribute block is modified, ext4_xattr_hash_entry()
    recalculates e_hash for the entry that is pointed by s->here. This  is
    unnecessary if the modification is to remove an entry.
    
    Currently, if the removed entry is the last one and there are other
    entries remaining, hash calculation targets the just erased entry which
    has been filled with zeroes and effectively does nothing.  If the removed
    entry is not the last one and there are more entries, this time it will
    recalculate hash on the next entry which is totally unnecessary.
    
    Fix these by moving the decision on when to recalculate hash to
    ext4_xattr_set_entry().
    Signed-off-by: default avatarTahsin Erdogan <tahsin@google.com>
    Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
    daf83281
xattr.c 78.2 KB