Lines Matching full:handler
46 #define for_each_xattr_handler(handlers, handler) \ argument
48 for ((handler) = *(handlers)++; \
49 (handler) != NULL; \
50 (handler) = *(handlers)++)
59 const struct xattr_handler *handler; in xattr_resolve_name() local
66 for_each_xattr_handler(handlers, handler) { in xattr_resolve_name()
69 n = strcmp_prefix(*name, xattr_prefix(handler)); in xattr_resolve_name()
71 if (!handler->prefix ^ !*n) { in xattr_resolve_name()
77 return handler; in xattr_resolve_name()
142 * Look for any handler that deals with the specified namespace.
148 const struct xattr_handler *handler; in xattr_supported_namespace() local
159 for_each_xattr_handler(handlers, handler) { in xattr_supported_namespace()
160 if (!strncmp(xattr_prefix(handler), prefix, preflen)) in xattr_supported_namespace()
173 const struct xattr_handler *handler; in __vfs_setxattr() local
175 handler = xattr_resolve_name(inode, &name); in __vfs_setxattr()
176 if (IS_ERR(handler)) in __vfs_setxattr()
177 return PTR_ERR(handler); in __vfs_setxattr()
178 if (!handler->set) in __vfs_setxattr()
182 return handler->set(handler, mnt_userns, dentry, inode, name, value, in __vfs_setxattr()
366 const struct xattr_handler *handler; in vfs_getxattr_alloc() local
375 handler = xattr_resolve_name(inode, &name); in vfs_getxattr_alloc()
376 if (IS_ERR(handler)) in vfs_getxattr_alloc()
377 return PTR_ERR(handler); in vfs_getxattr_alloc()
378 if (!handler->get) in vfs_getxattr_alloc()
380 error = handler->get(handler, dentry, inode, name, NULL, 0); in vfs_getxattr_alloc()
391 error = handler->get(handler, dentry, inode, name, value, error); in vfs_getxattr_alloc()
400 const struct xattr_handler *handler; in __vfs_getxattr() local
402 handler = xattr_resolve_name(inode, &name); in __vfs_getxattr()
403 if (IS_ERR(handler)) in __vfs_getxattr()
404 return PTR_ERR(handler); in __vfs_getxattr()
405 if (!handler->get) in __vfs_getxattr()
407 return handler->get(handler, dentry, inode, name, value, size); in __vfs_getxattr()
472 const struct xattr_handler *handler; in __vfs_removexattr() local
474 handler = xattr_resolve_name(inode, &name); in __vfs_removexattr()
475 if (IS_ERR(handler)) in __vfs_removexattr()
476 return PTR_ERR(handler); in __vfs_removexattr()
477 if (!handler->set) in __vfs_removexattr()
479 return handler->set(handler, mnt_userns, dentry, inode, name, NULL, 0, in __vfs_removexattr()
940 const struct xattr_handler *handler, **handlers = dentry->d_sb->s_xattr; in generic_listxattr() local
944 for_each_xattr_handler(handlers, handler) { in generic_listxattr()
945 if (!handler->name || in generic_listxattr()
946 (handler->list && !handler->list(dentry))) in generic_listxattr()
948 size += strlen(handler->name) + 1; in generic_listxattr()
954 for_each_xattr_handler(handlers, handler) { in generic_listxattr()
955 if (!handler->name || in generic_listxattr()
956 (handler->list && !handler->list(dentry))) in generic_listxattr()
958 len = strlen(handler->name); in generic_listxattr()
961 memcpy(buf, handler->name, len + 1); in generic_listxattr()
974 * @handler: handler of the xattr_handler operation
977 * The get and set xattr handler operations are called with the remainder of
978 * the attribute name after skipping the handler's prefix: for example, "foo"
979 * is passed to the get operation of a handler with prefix "user." to get
982 * Note: the list xattr handler operation when called from the vfs is passed a
986 const char *xattr_full_name(const struct xattr_handler *handler, in xattr_full_name() argument
989 size_t prefix_len = strlen(xattr_prefix(handler)); in xattr_full_name()