X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fllite%2Fxattr.c;h=1651d6bd5cd77b1566a462134154cf5c43e0294c;hp=cc7839fd01f44e94a237b3ba522a37057cb4484c;hb=0feec5a3c7d4518d5c563739124b202a6a0a99f7;hpb=fb545fa83837c1478ad41f752cf5d3e313b67c73 diff --git a/lustre/llite/xattr.c b/lustre/llite/xattr.c index cc7839f..1651d6b 100644 --- a/lustre/llite/xattr.c +++ b/lustre/llite/xattr.c @@ -90,7 +90,13 @@ static int xattr_type_filter(struct ll_sb_info *sbi, return 0; } +#ifndef HAVE_USER_NAMESPACE_ARG +#define ll_xattr_set_common(hd, ns, de, inode, name, value, size, flags) \ + ll_xattr_set_common(hd, de, inode, name, value, size, flags) +#endif + static int ll_xattr_set_common(const struct xattr_handler *handler, + struct user_namespace *mnt_userns, struct dentry *dentry, struct inode *inode, const char *name, const void *value, size_t size, int flags) @@ -123,7 +129,7 @@ static int ll_xattr_set_common(const struct xattr_handler *handler, if ((handler->flags == XATTR_ACL_ACCESS_T || handler->flags == XATTR_ACL_DEFAULT_T) && - !inode_owner_or_capable(inode)) + !inode_owner_or_capable(mnt_userns, inode)) RETURN(-EPERM); /* b10667: ignore lustre special xattr for now */ @@ -330,7 +336,13 @@ static int ll_setstripe_ea(struct dentry *dentry, struct lov_user_md *lump, return rc; } +#ifndef HAVE_USER_NAMESPACE_ARG +#define ll_xattr_set(hd, ns, de, inode, name, value, size, flags) \ + ll_xattr_set(hd, de, inode, name, value, size, flags) +#endif + static int ll_xattr_set(const struct xattr_handler *handler, + struct user_namespace *mnt_userns, struct dentry *dentry, struct inode *inode, const char *name, const void *value, size_t size, int flags) @@ -364,8 +376,8 @@ static int ll_xattr_set(const struct xattr_handler *handler, le32_to_cpu(LOV_MAGIC_MASK)) == le32_to_cpu(LOV_MAGIC_MAGIC)) lustre_swab_lov_user_md((struct lov_user_md *)value, 0); - return ll_xattr_set_common(handler, dentry, inode, name, value, size, - flags); + return ll_xattr_set_common(handler, mnt_userns, dentry, inode, name, + value, size, flags); } int ll_xattr_list(struct inode *inode, const char *name, int type, void *buffer, @@ -741,7 +753,8 @@ static int ll_xattr_set_4_3(const struct xattr_handler *handler, size, flags); } -#elif !defined(HAVE_XATTR_HANDLER_INODE_PARAM) +#elif !defined(HAVE_USER_NAMESPACE_ARG) && \ +!defined(HAVE_XATTR_HANDLER_INODE_PARAM) const struct xattr_handler *get_xattr_handler(int handler_flag) { int i = 0; @@ -787,7 +800,7 @@ static int ll_xattr_set_common_3_11(struct dentry *dentry, const char *name, if (!handler) return -ENXIO; - return ll_xattr_set_common(handler, dentry, dentry->d_inode, name, + return ll_xattr_set_common(handler, NULL, dentry, dentry->d_inode, name, value, size, flags); } @@ -800,7 +813,7 @@ static int ll_xattr_set_3_11(struct dentry *dentry, const char *name, if (!handler) return -ENXIO; - return ll_xattr_set(handler, dentry, dentry->d_inode, name, value, + return ll_xattr_set(handler, NULL, dentry, dentry->d_inode, name, value, size, flags); } #endif @@ -811,7 +824,8 @@ static const struct xattr_handler ll_user_xattr_handler = { #if defined(HAVE_XATTR_HANDLER_SIMPLIFIED) .get = ll_xattr_get_common_4_3, .set = ll_xattr_set_common_4_3, -#elif !defined(HAVE_XATTR_HANDLER_INODE_PARAM) +#elif !defined(HAVE_USER_NAMESPACE_ARG) && \ +!defined(HAVE_XATTR_HANDLER_INODE_PARAM) .get = ll_xattr_get_common_3_11, .set = ll_xattr_set_common_3_11, #else @@ -826,7 +840,8 @@ static const struct xattr_handler ll_trusted_xattr_handler = { #if defined(HAVE_XATTR_HANDLER_SIMPLIFIED) .get = ll_xattr_get_4_3, .set = ll_xattr_set_4_3, -#elif !defined(HAVE_XATTR_HANDLER_INODE_PARAM) +#elif !defined(HAVE_USER_NAMESPACE_ARG) && \ +!defined(HAVE_XATTR_HANDLER_INODE_PARAM) .get = ll_xattr_get_3_11, .set = ll_xattr_set_3_11, #else @@ -841,7 +856,8 @@ static const struct xattr_handler ll_security_xattr_handler = { #if defined(HAVE_XATTR_HANDLER_SIMPLIFIED) .get = ll_xattr_get_common_4_3, .set = ll_xattr_set_common_4_3, -#elif !defined(HAVE_XATTR_HANDLER_INODE_PARAM) +#elif !defined(HAVE_USER_NAMESPACE_ARG) && \ +!defined(HAVE_XATTR_HANDLER_INODE_PARAM) .get = ll_xattr_get_common_3_11, .set = ll_xattr_set_common_3_11, #else @@ -860,7 +876,8 @@ static const struct xattr_handler ll_acl_access_xattr_handler = { #if defined(HAVE_XATTR_HANDLER_SIMPLIFIED) .get = ll_xattr_get_common_4_3, .set = ll_xattr_set_common_4_3, -#elif !defined(HAVE_XATTR_HANDLER_INODE_PARAM) +#elif !defined(HAVE_USER_NAMESPACE_ARG) && \ +!defined(HAVE_XATTR_HANDLER_INODE_PARAM) .get = ll_xattr_get_common_3_11, .set = ll_xattr_set_common_3_11, #else @@ -879,7 +896,8 @@ static const struct xattr_handler ll_acl_default_xattr_handler = { #if defined(HAVE_XATTR_HANDLER_SIMPLIFIED) .get = ll_xattr_get_common_4_3, .set = ll_xattr_set_common_4_3, -#elif !defined(HAVE_XATTR_HANDLER_INODE_PARAM) +#elif !defined(HAVE_USER_NAMESPACE_ARG) && \ +!defined(HAVE_XATTR_HANDLER_INODE_PARAM) .get = ll_xattr_get_common_3_11, .set = ll_xattr_set_common_3_11, #else @@ -894,7 +912,8 @@ static const struct xattr_handler ll_lustre_xattr_handler = { #if defined(HAVE_XATTR_HANDLER_SIMPLIFIED) .get = ll_xattr_get_4_3, .set = ll_xattr_set_4_3, -#elif !defined(HAVE_XATTR_HANDLER_INODE_PARAM) +#elif !defined(HAVE_USER_NAMESPACE_ARG) && \ +!defined(HAVE_XATTR_HANDLER_INODE_PARAM) .get = ll_xattr_get_3_11, .set = ll_xattr_set_3_11, #else