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

Reply via email to