diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c index de217a0947332bf2a657c48b9a3ba7e4eebbb860..4025666c59912661a2cf9f799bf4cce9bb6a411d 100644 --- a/fs/ext4/xattr.c +++ b/fs/ext4/xattr.c @@ -1816,9 +1816,6 @@ ext4_xattr_block_set(handle_t *handle, struct inode *inode, ea_bdebug(bs->bh, "modifying in-place"); error = ext4_xattr_set_entry(i, s, handle, inode, true /* is_block */); - if (!error) - ext4_xattr_block_cache_insert(ea_block_cache, - bs->bh); ext4_xattr_block_csum_set(inode, bs->bh); unlock_buffer(bs->bh); if (error == -EFSCORRUPTED) @@ -1974,6 +1971,7 @@ ext4_xattr_block_set(handle_t *handle, struct inode *inode, } else if (bs->bh && s->base == bs->bh->b_data) { /* We were modifying this block in-place. */ ea_bdebug(bs->bh, "keeping this block"); + ext4_xattr_block_cache_insert(ea_block_cache, bs->bh); new_bh = bs->bh; get_bh(new_bh); } else {