]> www.infradead.org Git - linux.git/commitdiff
bcachefs: Simplify bch2_xattr_emit() implementation
authorYouling Tang <tangyouling@kylinos.cn>
Thu, 15 Aug 2024 08:57:44 +0000 (16:57 +0800)
committerKent Overstreet <kent.overstreet@linux.dev>
Mon, 9 Sep 2024 13:41:49 +0000 (09:41 -0400)
Use helper functions to make code more readable.

Similar to commit a5488f29835c ("fs: simplify ->listxattr() implementation")

Signed-off-by: Youling Tang <tangyouling@kylinos.cn>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/xattr.c

index 7b3d9fdae244f009ea93f07443c73e4daf3ced83..56c8d3fe55a4ed065681a8111c1ba32de467ea5d 100644 (file)
@@ -250,17 +250,27 @@ static int __bch2_xattr_emit(const char *prefix,
        return 0;
 }
 
+static inline const char *bch2_xattr_prefix(unsigned type, struct dentry *dentry)
+{
+       const struct xattr_handler *handler = bch2_xattr_type_to_handler(type);
+
+       if (!xattr_handler_can_list(handler, dentry))
+               return NULL;
+
+       return xattr_prefix(handler);
+}
+
 static int bch2_xattr_emit(struct dentry *dentry,
                            const struct bch_xattr *xattr,
                            struct xattr_buf *buf)
 {
-       const struct xattr_handler *handler =
-               bch2_xattr_type_to_handler(xattr->x_type);
+       const char *prefix;
+
+       prefix = bch2_xattr_prefix(xattr->x_type, dentry);
+       if (!prefix)
+               return 0;
 
-       return handler && (!handler->list || handler->list(dentry))
-               ? __bch2_xattr_emit(handler->prefix ?: handler->name,
-                                   xattr->x_name, xattr->x_name_len, buf)
-               : 0;
+       return __bch2_xattr_emit(prefix, xattr->x_name, xattr->x_name_len, buf);
 }
 
 static int bch2_xattr_list_bcachefs(struct bch_fs *c,