Whamcloud - gitweb
LU-11668 debug: print object type in mdd_parent_fid
[fs/lustre-release.git] / lustre / mdd / mdd_dir.c
index e9380ff..14d0264 100644 (file)
@@ -219,7 +219,10 @@ static inline int mdd_parent_fid(const struct lu_env *env,
 
        ENTRY;
 
-       LASSERT(S_ISDIR(mdd_object_type(obj)));
+       LASSERTF(S_ISDIR(mdd_object_type(obj)),
+                "%s: FID "DFID" is not a directory type = %o\n",
+                mdd_obj_dev_name(obj), PFID(mdd_object_fid(obj)),
+                mdd_object_type(obj));
 
        buf = lu_buf_check_and_alloc(buf, PATH_MAX);
        if (buf->lb_buf == NULL)
@@ -666,15 +669,11 @@ static int __mdd_index_insert_only(const struct lu_env *env,
 
        if (dt_try_as_dir(env, next)) {
                struct dt_insert_rec    *rec = &mdd_env_info(env)->mti_dt_rec;
-               struct lu_ucred         *uc  = lu_ucred_check(env);
-               int                      ignore_quota;
 
                rec->rec_fid = lf;
                rec->rec_type = type;
-               ignore_quota = uc ? uc->uc_cap & CFS_CAP_SYS_RESOURCE_MASK : 1;
                rc = dt_insert(env, next, (const struct dt_rec *)rec,
-                              (const struct dt_key *)name, handle,
-                              ignore_quota);
+                              (const struct dt_key *)name, handle);
        } else {
                rc = -ENOTDIR;
        }
@@ -722,17 +721,17 @@ static int mdd_llog_record_calc_size(const struct lu_env *env,
                                     const struct lu_name *sname)
 {
        const struct lu_ucred   *uc = lu_ucred(env);
-       enum changelog_rec_flags crf = CLF_EXTRA_FLAGS;
+       enum changelog_rec_flags clf_flags = CLF_EXTRA_FLAGS;
        enum changelog_rec_extra_flags crfe = CLFE_UIDGID | CLFE_NID;
 
        if (sname != NULL)
-               crf |= CLF_RENAME;
+               clf_flags |= CLF_RENAME;
 
        if (uc != NULL && uc->uc_jobid[0] != '\0')
-               crf |= CLF_JOBID;
+               clf_flags |= CLF_JOBID;
 
        return llog_data_len(LLOG_CHANGELOG_HDR_SZ +
-                            changelog_rec_offset(crf, crfe) +
+                            changelog_rec_offset(clf_flags, crfe) +
                             (tname != NULL ? tname->ln_namelen : 0) +
                             (sname != NULL ? 1 + sname->ln_namelen : 0));
 }
@@ -915,17 +914,17 @@ void mdd_changelog_rec_extra_nid(struct changelog_rec *rec,
        clnid->cr_nid = nid;
 }
 
-void mdd_changelog_rec_extra_omode(struct changelog_rec *rec, int flags)
+void mdd_changelog_rec_extra_omode(struct changelog_rec *rec, u32 flags)
 {
        struct changelog_ext_openmode *omd = changelog_rec_openmode(rec);
 
-       omd->cr_openflags = (__u32)flags;
+       omd->cr_openflags = flags;
 }
 
 void mdd_changelog_rec_extra_xattr(struct changelog_rec *rec,
                                   const char *xattr_name)
 {
-       struct changelog_ext_xattr    *xattr = changelog_rec_xattr(rec);
+       struct changelog_ext_xattr *xattr = changelog_rec_xattr(rec);
 
        strlcpy(xattr->cr_xattr, xattr_name, sizeof(xattr->cr_xattr));
 }
@@ -944,7 +943,7 @@ void mdd_changelog_rec_extra_xattr(struct changelog_rec *rec,
 int mdd_changelog_ns_store(const struct lu_env *env,
                           struct mdd_device *mdd,
                           enum changelog_rec_type type,
-                          enum changelog_rec_flags crf,
+                          enum changelog_rec_flags clf_flags,
                           struct mdd_object *target,
                           const struct lu_fid *tpfid,
                           const struct lu_fid *sfid,
@@ -974,24 +973,24 @@ int mdd_changelog_ns_store(const struct lu_env *env,
                RETURN(-ENOMEM);
        rec = buf->lb_buf;
 
-       crf &= CLF_FLAGMASK;
-       crf |= CLF_EXTRA_FLAGS;
+       clf_flags &= CLF_FLAGMASK;
+       clf_flags |= CLF_EXTRA_FLAGS;
 
        if (uc) {
                if (uc->uc_jobid[0] != '\0')
-                       crf |= CLF_JOBID;
+                       clf_flags |= CLF_JOBID;
                xflags |= CLFE_UIDGID;
                xflags |= CLFE_NID;
        }
 
        if (sname != NULL)
-               crf |= CLF_RENAME;
+               clf_flags |= CLF_RENAME;
        else
-               crf |= CLF_VERSION;
+               clf_flags |= CLF_VERSION;
 
-       rec->cr.cr_flags = crf;
+       rec->cr.cr_flags = clf_flags;
 
-       if (crf & CLF_EXTRA_FLAGS) {
+       if (clf_flags & CLF_EXTRA_FLAGS) {
                mdd_changelog_rec_ext_extra_flags(&rec->cr, xflags);
                if (xflags & CLFE_UIDGID)
                        mdd_changelog_rec_extra_uidgid(&rec->cr,
@@ -1005,10 +1004,10 @@ int mdd_changelog_ns_store(const struct lu_env *env,
        rec->cr.cr_namelen = tname->ln_namelen;
        memcpy(changelog_rec_name(&rec->cr), tname->ln_name, tname->ln_namelen);
 
-       if (crf & CLF_RENAME)
+       if (clf_flags & CLF_RENAME)
                mdd_changelog_rec_ext_rename(&rec->cr, sfid, spfid, sname);
 
-       if (crf & CLF_JOBID)
+       if (clf_flags & CLF_JOBID)
                mdd_changelog_rec_ext_jobid(&rec->cr, uc->uc_jobid);
 
        if (likely(target != NULL)) {
@@ -2345,17 +2344,13 @@ static int mdd_create_object(const struct lu_env *env, struct mdd_object *pobj,
 #endif
 
        if (S_ISLNK(attr->la_mode)) {
-               struct lu_ucred  *uc = lu_ucred_assert(env);
                struct dt_object *dt = mdd_object_child(son);
                const char *target_name = spec->u.sp_symname;
                int sym_len = strlen(target_name);
                loff_t pos = 0;
 
                buf = mdd_buf_get_const(env, target_name, sym_len);
-               rc = dt->do_body_ops->dbo_write(env, dt, buf, &pos, handle,
-                                               uc->uc_cap &
-                                               CFS_CAP_SYS_RESOURCE_MASK);
-
+               rc = dt->do_body_ops->dbo_write(env, dt, buf, &pos, handle);
                if (rc == sym_len)
                        rc = 0;
                else
@@ -3939,18 +3934,19 @@ static int mdd_declare_migrate_create(const struct lu_env *env,
                return rc;
 
        if (S_ISREG(attr->la_mode)) {
+               struct lu_buf fid_buf;
+
                handle->th_complex = 1;
 
-               rc = mdo_declare_xattr_del(env, sobj, XATTR_NAME_LOV, handle);
+               /* target may be remote, update PFID via sobj. */
+               fid_buf.lb_buf = (void *)mdo2fid(tobj);
+               fid_buf.lb_len = sizeof(struct lu_fid);
+               rc = mdo_declare_xattr_set(env, sobj, &fid_buf, XATTR_NAME_FID,
+                                          0, handle);
                if (rc)
                        return rc;
 
-               /*
-                * target is not initalized because its LOV is copied from
-                * source in mdd_migrate_create(), declare via sobj.
-                */
-               rc = mdo_declare_xattr_set(env, sobj, NULL, XATTR_NAME_FID, 0,
-                                          handle);
+               rc = mdo_declare_xattr_del(env, sobj, XATTR_NAME_LOV, handle);
                if (rc)
                        return rc;
        }
@@ -4060,18 +4056,24 @@ static int mdd_migrate_create(const struct lu_env *env,
        if (rc)
                RETURN(rc);
 
+       /* for regular file, update OST objects XATTR_NAME_FID */
        if (S_ISREG(attr->la_mode)) {
+               struct lu_buf fid_buf;
+
+               /* target may be remote, update PFID via sobj. */
+               fid_buf.lb_buf = (void *)mdo2fid(tobj);
+               fid_buf.lb_len = sizeof(struct lu_fid);
+               rc = mdo_xattr_set(env, sobj, &fid_buf, XATTR_NAME_FID, 0,
+                                  handle);
+               if (rc)
+                       RETURN(rc);
+
                /* delete LOV to avoid deleting OST objs when destroying sobj */
                mdd_write_lock(env, sobj, MOR_SRC_CHILD);
                rc = mdo_xattr_del(env, sobj, XATTR_NAME_LOV, handle);
                mdd_write_unlock(env, sobj);
                if (rc)
                        RETURN(rc);
-
-               /* for regular file, update OST objects XATTR_NAME_FID */
-               rc = mdo_xattr_set(env, tobj, NULL, XATTR_NAME_FID, 0, handle);
-               if (rc)
-                       RETURN(rc);
        }
 
        if (!S_ISDIR(attr->la_mode))