mirror of https://gitee.com/openkylin/linux.git
btrfs: xattr: fix attribute removal
An attribute is not removed by 'setfattr -x attr file' and remains visible in attr list. This makes xfstests/062 pass again. Signed-off-by: David Sterba <dsterba@suse.cz> Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
parent
a39f752143
commit
4815053aba
|
@ -116,6 +116,12 @@ static int do_setxattr(struct btrfs_trans_handle *trans,
|
||||||
if (ret)
|
if (ret)
|
||||||
goto out;
|
goto out;
|
||||||
btrfs_release_path(path);
|
btrfs_release_path(path);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* remove the attribute
|
||||||
|
*/
|
||||||
|
if (!value)
|
||||||
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
again:
|
again:
|
||||||
|
@ -158,6 +164,9 @@ static int do_setxattr(struct btrfs_trans_handle *trans,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @value: "" makes the attribute to empty, NULL removes it
|
||||||
|
*/
|
||||||
int __btrfs_setxattr(struct btrfs_trans_handle *trans,
|
int __btrfs_setxattr(struct btrfs_trans_handle *trans,
|
||||||
struct inode *inode, const char *name,
|
struct inode *inode, const char *name,
|
||||||
const void *value, size_t size, int flags)
|
const void *value, size_t size, int flags)
|
||||||
|
|
Loading…
Reference in New Issue