The {get, set, remove}xattr inode operations have been already removed in commit fd50ecaddf83("vfs: Remove {get,set,remove}xattr inode operations"). Adjust the yaffs2 to use the generic xattr handler.
Signed-off-by: Kevin Hao <kexin....@windriver.com> --- fs/yaffs2/yaffs_vfs.c | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/fs/yaffs2/yaffs_vfs.c b/fs/yaffs2/yaffs_vfs.c index e5e0c650baca..efcb118d2ba1 100644 --- a/fs/yaffs2/yaffs_vfs.c +++ b/fs/yaffs2/yaffs_vfs.c @@ -1029,10 +1029,7 @@ static ssize_t yaffs_listxattr(struct dentry * dentry, char *buff, size_t size) static const struct inode_operations yaffs_file_inode_operations = { .setattr = yaffs_setattr, - .setxattr = yaffs_setxattr, - .getxattr = yaffs_getxattr, .listxattr = yaffs_listxattr, - .removexattr = yaffs_removexattr, }; @@ -1125,10 +1122,7 @@ static const struct inode_operations yaffs_symlink_inode_operations = { .follow_link = yaffs_follow_link, #endif .setattr = yaffs_setattr, - .setxattr = yaffs_setxattr, - .getxattr = yaffs_getxattr, .listxattr = yaffs_listxattr, - .removexattr = yaffs_removexattr, }; #ifdef YAFFS_USE_OWN_IGET @@ -1581,10 +1575,7 @@ static const struct inode_operations yaffs_dir_inode_operations = { .mknod = yaffs_mknod, .rename = yaffs_rename, .setattr = yaffs_setattr, - .setxattr = yaffs_setxattr, - .getxattr = yaffs_getxattr, .listxattr = yaffs_listxattr, - .removexattr = yaffs_removexattr, }; /*-----------------------------------------------------------------*/ @@ -2771,7 +2762,34 @@ static struct dentry *yaffs_make_root(struct inode *inode) } +static int yaffs_xattr_get(const struct xattr_handler *handler, + struct dentry *dentry, struct inode *inode, + const char *name, void *buff, size_t size) +{ + return yaffs_getxattr(dentry, inode, name, buff, size); +} +static int yaffs_xattr_set(const struct xattr_handler *handler, + struct dentry *dentry, struct inode *inode, + const char *name, const void *value, size_t size, + int flags) +{ + if (value) + return yaffs_setxattr(dentry, inode, name, value, size, flags); + else + return yaffs_removexattr(dentry, name); +} + +static const struct xattr_handler yaffs_xattr_handler = { + .prefix = "", /* match anything */ + .get = yaffs_xattr_get, + .set = yaffs_xattr_set, +}; + +static const struct xattr_handler *yaffs_xattr_handlers[] = { + &yaffs_xattr_handler, + NULL +}; static struct super_block *yaffs_internal_read_super(int yaffs_version, struct super_block *sb, @@ -2805,6 +2823,7 @@ static struct super_block *yaffs_internal_read_super(int yaffs_version, sb->s_magic = YAFFS_MAGIC; sb->s_op = &yaffs_super_ops; + sb->s_xattr = yaffs_xattr_handlers; sb->s_flags |= MS_NOATIME; read_only = ((sb->s_flags & MS_RDONLY) != 0); -- 2.9.3 -- _______________________________________________ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto