Whamcloud - gitweb
b=2185
[fs/lustre-release.git] / lustre / mds / mds_open.c
index df0c8b5..510d844 100644 (file)
@@ -389,6 +389,10 @@ static int mds_create_objects(struct ptlrpc_request *req, int offset,
                                            0, &lsm, rec->ur_eadata);
                         if (rc)
                                 GOTO(out_oa, rc);
+                } else {
+                        /* Per-directory striping default code removed, because
+                         * it uses the same unnamed EA storage as the directory
+                         * striping for CMD. -p */
                 } 
                 LASSERT(oa->o_gr >= FILTER_GROUP_FIRST_MDS);
                 rc = obd_create(mds->mds_osc_exp, oa, &lsm, &oti);
@@ -814,6 +818,10 @@ int mds_open(struct mds_update_record *rec, int offset,
         int mea_size, update_mode;
         ENTRY;
 
+        DEBUG_REQ(D_INODE, req, "parent "LPU64"/%u name %*s mode %o",
+                  rec->ur_fid1->id, rec->ur_fid1->generation,
+                  rec->ur_namelen - 1, rec->ur_name, rec->ur_mode);
+
         parent_lockh[0].cookie = 0;
         parent_lockh[1].cookie = 0;
 
@@ -905,9 +913,13 @@ int mds_open(struct mds_update_record *rec, int offset,
                  * should live at this MDS or at another one */
                 int i;
                 i = mea_name2idx(mea, rec->ur_name, rec->ur_namelen - 1);
-                if (mea->mea_master != i) {
-                        CERROR("inapropriate MDS(%d) for %s. should be %d\n",
-                                mea->mea_master, rec->ur_name, i);
+                if (mea->mea_master != mea->mea_fids[i].mds) {
+                        CDEBUG(D_OTHER,
+                               "%s: inapropriate MDS(%d) for %lu/%u:%s."
+                               " should be %d(%d)\n", obd->obd_name,
+                               mea->mea_master, dparent->d_inode->i_ino,
+                               dparent->d_inode->i_generation, rec->ur_name,
+                               mea->mea_fids[i].mds, i);
                         GOTO(cleanup, rc = -ERESTART);
                 }
         }
@@ -969,15 +981,16 @@ got_child:
                 unsigned long ino = rec->ur_fid2->id;
                 struct iattr iattr;
                 struct inode *inode;
-
-                if ((rc = mds_try_to_split_dir(obd, dparent, &mea, 0))) {
-                        if (rc > 0) {
-                                /* dir got splitted */
-                                GOTO(cleanup, rc = -ERESTART);
-                        } else {
-                                /* error happened during spitting */
-                                GOTO(cleanup, rc);
-                        }
+                rc = mds_try_to_split_dir(obd, dparent, &mea, 0, update_mode);
+                CDEBUG(D_OTHER, "%s: splitted %lu/%u - %d\n",
+                       obd->obd_name, dparent->d_inode->i_ino,
+                       dparent->d_inode->i_generation, rc);
+                if (rc > 0) {
+                        /* dir got splitted */
+                        GOTO(cleanup, rc = -ERESTART);
+                } else if (rc < 0) {
+                        /* error happened during spitting */
+                        GOTO(cleanup, rc);
                 }
 
                 if (!(rec->ur_flags & MDS_OPEN_CREAT)) {
@@ -1115,7 +1128,9 @@ got_child:
                                        err);
                         }
                 } else if (created) {
+#if 0
                         mds_lock_new_child(obd, dchild->d_inode, NULL);
+#endif
                 }
                 l_dput(dchild);
         case 1: