diff --git a/fs/btrfs/xattr.c b/fs/btrfs/xattr.c index e9d384055494a6f17ddf9ee99f31766926a8c4dd..aef6bb3c5f5c82a77a1d5eeaef0d65a6661d7367 100644 --- a/fs/btrfs/xattr.c +++ b/fs/btrfs/xattr.c @@ -122,6 +122,16 @@ static int do_setxattr(struct btrfs_trans_handle *trans, */ if (!value) goto out; + } else { + di = btrfs_lookup_xattr(NULL, root, path, btrfs_ino(inode), + name, name_len, 0); + if (IS_ERR(di)) { + ret = PTR_ERR(di); + goto out; + } + if (!di && !value) + goto out; + btrfs_release_path(path); } again: