summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiu Bo <bo.li.liu@oracle.com>2012-11-28 10:43:12 +0000
committerChris Mason <chris.mason@fusionio.com>2012-12-16 20:46:15 -0500
commit01e6deb25ae11e7b85484bf5e550eb540c50c63e (patch)
tree2a77caad6357ccc88f69e7c0c5ac655be71cf085
parent755ac67f83e515af55adbfe55134eb7d90839cdb (diff)
downloadlinux-01e6deb25ae11e7b85484bf5e550eb540c50c63e.tar.gz
linux-01e6deb25ae11e7b85484bf5e550eb540c50c63e.tar.bz2
linux-01e6deb25ae11e7b85484bf5e550eb540c50c63e.zip
Btrfs: don't add a NULL extended attribute
Passing a null extended attribute value means to remove the attribute, but we don't have to add a new NULL extended attribute. Signed-off-by: Liu Bo <bo.li.liu@oracle.com> Signed-off-by: Chris Mason <chris.mason@fusionio.com>
-rw-r--r--fs/btrfs/xattr.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/fs/btrfs/xattr.c b/fs/btrfs/xattr.c
index e9d384055494..aef6bb3c5f5c 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: