From: Youling Tang <[email protected]>

Use helper functions to make code more readable.

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

Signed-off-by: Youling Tang <[email protected]>
---
 fs/bcachefs/xattr.c | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/fs/bcachefs/xattr.c b/fs/bcachefs/xattr.c
index 9e77e949a29b..e64e2c47b6ca 100644
--- a/fs/bcachefs/xattr.c
+++ b/fs/bcachefs/xattr.c
@@ -251,17 +251,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,
-- 
2.34.1


Reply via email to