Whamcloud - gitweb
LU-5092 nodemap: users of ted_nodemap should take ref
[fs/lustre-release.git] / lustre / mdt / mdt_xattr.c
index 2dfce43..2e08a58 100644 (file)
@@ -374,7 +374,6 @@ int mdt_reint_setxattr(struct mdt_thread_info *info,
        struct mdt_object       *obj;
        struct md_object        *child;
        struct obd_export       *exp = info->mti_exp;
-       struct lu_nodemap       *nodemap = exp->exp_target_data.ted_nodemap;
        __u64                    valid = attr->la_valid;
        const char              *xattr_name = rr->rr_name.ln_name;
        int                      xattr_len = rr->rr_eadatalen;
@@ -431,13 +430,19 @@ int mdt_reint_setxattr(struct mdt_thread_info *info,
        } else if ((valid & OBD_MD_FLXATTR) &&
                   (strcmp(xattr_name, XATTR_NAME_ACL_ACCESS) == 0 ||
                    strcmp(xattr_name, XATTR_NAME_ACL_DEFAULT) == 0)) {
+               struct lu_nodemap *nodemap;
 
                /* currently lustre limit acl access size */
                if (xattr_len > LUSTRE_POSIX_ACL_MAX_SIZE)
                        GOTO(out, rc = -ERANGE);
 
+               nodemap = nodemap_get_from_exp(exp);
+               if (IS_ERR(nodemap))
+                       GOTO(out, rc = PTR_ERR(nodemap));
+
                rc = nodemap_map_acl(nodemap, rr->rr_eadata, xattr_len,
                                     NODEMAP_CLIENT_TO_FS);
+               nodemap_putref(nodemap);
                if (rc < 0)
                        GOTO(out, rc);