#define ll_removexattr generic_removexattr
#endif /* HAVE_IOP_XATTR */
-#ifndef HAVE_VFS_SETXATTR
-const struct xattr_handler *get_xattr_type(const char *name);
-
-static inline int
-__vfs_setxattr(struct dentry *dentry, struct inode *inode, const char *name,
- const void *value, size_t size, int flags)
-{
- const struct xattr_handler *handler;
- int rc;
-
- handler = get_xattr_type(name);
- if (!handler)
- return -EOPNOTSUPP;
-
-# if defined(HAVE_XATTR_HANDLER_INODE_PARAM)
- rc = handler->set(handler, dentry, inode, name, value, size, flags);
-# elif defined(HAVE_XATTR_HANDLER_SIMPLIFIED)
- rc = handler->set(handler, dentry, name, value, size, flags);
-# else
- rc = handler->set(dentry, name, value, size, flags, handler->flags);
-# endif /* !HAVE_XATTR_HANDLER_INODE_PARAM */
- return rc;
-}
-#endif /* HAVE_VFS_SETXATTR */
-
#ifndef HAVE_POSIX_ACL_VALID_USER_NS
#define posix_acl_valid(a,b) posix_acl_valid(b)
#endif
#define selinux_is_enabled() 1
#endif
+static inline int ll_vfs_getxattr(struct dentry *dentry, struct inode *inode,
+ const char *name,
+ void *value, size_t size)
+{
+#ifndef HAVE_VFS_SETXATTR
+ if (!inode->i_op->getxattr)
+ return -ENODATA;
+
+ return inode->i_op->getxattr(dentry, name, value, size);
+#else
+ return __vfs_getxattr(dentry, inode, name, value, size);
+#endif
+}
+
+static inline int ll_vfs_setxattr(struct dentry *dentry, struct inode *inode,
+ const char *name,
+ const void *value, size_t size, int flags)
+{
+#ifndef HAVE_VFS_SETXATTR
+ if (!inode->i_op->setxattr)
+ return -ENOTSUPP;
+
+ return inode->i_op->setxattr(dentry, name, value, size, flags);
+#else
+ return __vfs_setxattr(dentry, inode, name, value, size, flags);
+#endif
+}
+
+static inline int ll_vfs_removexattr(struct dentry *dentry, struct inode *inode,
+ const char *name)
+{
+#ifndef HAVE_VFS_SETXATTR
+ if (!inode->i_op->setxattr)
+ return -ENOTSUPP;
+
+ return inode->i_op->removexattr(dentry, name);
+#else
+ return __vfs_removexattr(dentry, name);
+#endif
+}
+
#endif /* _LUSTRE_COMPAT_H */
if (!(lli->lli_pcc_dsflags & PCC_DATASET_AUTO_ATTACH))
RETURN(0);
-#ifndef HAVE_VFS_SETXATTR
- if (!pcc_dentry->d_inode->i_op->setxattr)
- RETURN(-ENOTSUPP);
+ rc = ll_vfs_setxattr(pcc_dentry, pcc_dentry->d_inode, pcc_xattr_layout,
+ &gen, sizeof(gen), 0);
- rc = pcc_dentry->d_inode->i_op->setxattr(pcc_dentry, pcc_xattr_layout,
- &gen, sizeof(gen), 0);
-#else
- rc = __vfs_setxattr(pcc_dentry, pcc_dentry->d_inode, pcc_xattr_layout,
- &gen, sizeof(gen), 0);
-#endif
RETURN(rc);
}
GOTO(out, rc = 0);
pcc_dentry = path.dentry;
-#ifndef HAVE_VFS_SETXATTR
- if (!pcc_dentry->d_inode->i_op->getxattr)
- /* ignore this error */
- GOTO(out_put_path, rc = 0);
-
- rc = pcc_dentry->d_inode->i_op->getxattr(pcc_dentry, pcc_xattr_layout,
- &pcc_gen, sizeof(pcc_gen));
-#else
- rc = __vfs_getxattr(pcc_dentry, pcc_dentry->d_inode, pcc_xattr_layout,
- &pcc_gen, sizeof(pcc_gen));
-#endif
-
+ rc = ll_vfs_getxattr(pcc_dentry, pcc_dentry->d_inode, pcc_xattr_layout,
+ &pcc_gen, sizeof(pcc_gen));
if (rc < 0)
/* ignore this error */
GOTO(out_put_path, rc = 0);
break;
}
- err = __vfs_setxattr(dentry, inode, full_name, xattr->value,
- xattr->value_len, XATTR_CREATE);
+ err = ll_vfs_setxattr(dentry, inode, full_name, xattr->value,
+ xattr->value_len, XATTR_CREATE);
kfree(full_name);
if (err < 0)
break;
/* Remove old PFID EA entry firstly. */
dquot_initialize(inode);
- rc = osd_removexattr(dentry, inode, XATTR_NAME_FID);
+ rc = ll_vfs_removexattr(dentry, inode, XATTR_NAME_FID);
if (rc == -ENODATA) {
if ((fl & LU_XATTR_REPLACE) && !(fl & LU_XATTR_CREATE))
RETURN(rc);
dquot_initialize(inode);
dentry->d_inode = inode;
dentry->d_sb = inode->i_sb;
- rc = osd_removexattr(dentry, inode, name);
+ rc = ll_vfs_removexattr(dentry, inode, name);
}
osd_trans_exec_check(env, handle, OSD_OT_XATTR_SET);
#define DECLARE_BVEC_ITER_ALL(iter) int iter
#endif
-#ifndef HAVE_VFS_SETXATTR
-#define osd_setxattr(dentry, inode, name, buf, len, flag) \
- ((inode)->i_op->setxattr(dentry, name, buf, len, flag))
-#define osd_getxattr(dentry, inode, name, buf, len) \
- ((inode)->i_op->getxattr(dentry, name, buf, len))
-#define osd_removexattr(dentry, inode, name) \
- ((inode)->i_op->removexattr(dentry, name))
-#else /* HAVE_VFS_SETXATTR */
-#define osd_setxattr(dentry, inode, name, buf, len, flag) \
- __vfs_setxattr(dentry, inode, name, buf, len, flag)
-#define osd_getxattr(dentry, inode, name, buf, len) \
- __vfs_getxattr(dentry, inode, name, buf, len)
-#define osd_removexattr(dentry, inode, name) \
- __vfs_removexattr(dentry, name)
-#endif /* !HAVE_VFS_SETXATTR */
-
static inline int __osd_xattr_get(struct inode *inode, struct dentry *dentry,
const char *name, void *buf, int len)
{
dentry->d_inode = inode;
dentry->d_sb = inode->i_sb;
- return osd_getxattr(dentry, inode, name, buf, len);
+ return ll_vfs_getxattr(dentry, inode, name, buf, len);
}
static inline int __osd_xattr_set(struct osd_thread_info *info,
dquot_initialize(inode);
dentry->d_inode = inode;
dentry->d_sb = inode->i_sb;
- return osd_setxattr(dentry, inode, name, buf, buflen, fl);
+ return ll_vfs_setxattr(dentry, inode, name, buf, buflen, fl);
}
#ifdef CONFIG_PROC_FS
if (rc == sizeof(*ff)) {
/* 2) delete the old XATTR_NAME_FID */
dquot_initialize(inode);
- rc = osd_removexattr(dentry, inode, XATTR_NAME_FID);
+ rc = ll_vfs_removexattr(dentry, inode, XATTR_NAME_FID);
if (rc)
GOTO(stop, rc);