Whamcloud - gitweb
b=3940
authorrread <rread>
Thu, 22 Jul 2004 05:25:49 +0000 (05:25 +0000)
committerrread <rread>
Thu, 22 Jul 2004 05:25:49 +0000 (05:25 +0000)
Also reconstruct what we can in the body, which is hopefully enough.

lustre/mds/mds_internal.h
lustre/mds/mds_lib.c
lustre/mds/mds_reint.c

index 0f3a091..d13c290 100644 (file)
@@ -124,6 +124,7 @@ int mds_get_md(struct obd_device *, struct inode *, void *md, int *size,
 int mds_pack_md(struct obd_device *, struct lustre_msg *, int offset,
                 struct mds_body *, struct inode *, int lock);
 void mds_pack_dentry2fid(struct ll_fid *, struct dentry *);
+void mds_pack_dentry2body(struct mds_body *b, struct dentry *dentry);
 void mds_pack_inode2fid(struct obd_device *, struct ll_fid *, struct inode *);
 void mds_pack_inode2body(struct obd_device *, struct mds_body *, struct inode *);
 #endif
@@ -136,7 +137,6 @@ int mds_try_to_split_dir(struct obd_device *, struct dentry *, struct mea **,
                          int, int);
 int mds_get_lmv_attr(struct obd_device *, struct inode *, struct mea **, int *);
 int mds_choose_mdsnum(struct obd_device *, const char *, int, int);
-int mds_lmv_postsetup(struct obd_device *);
 int mds_splitting_expected(struct obd_device *, struct dentry *);
 int mds_lock_slave_objs(struct obd_device *, struct dentry *,
                         struct lustre_handle **);
index e5a591b..3fc2a2c 100644 (file)
 #include <linux/lustre_lib.h>
 #include <linux/lustre_mds.h>
 
-void mds_pack_dentry2fid(struct ll_fid *fid,
-                                struct dentry *dentry)
+void mds_pack_dentry2fid(struct ll_fid *fid, struct dentry *dentry)
 {
         fid->id = dentry->d_inum;
         fid->generation = dentry->d_generation;
         fid->mds = dentry->d_mdsnum;
 }
 
+void mds_pack_dentry2body(struct mds_body *b, struct dentry *dentry)
+{
+        b->valid |= OBD_MD_FLID | OBD_MD_FLTYPE | OBD_MD_MDS;
+        b->ino = dentry->d_inum;
+        b->generation = dentry->d_generation;
+        b->mds = dentry->d_mdsnum;
+}
+
 void mds_pack_inode2fid(struct obd_device *obd, struct ll_fid *fid,
                                 struct inode *inode)
 {
@@ -73,7 +80,7 @@ void mds_pack_inode2body(struct obd_device *obd, struct mds_body *b,
         b->valid |= OBD_MD_FLID | OBD_MD_FLCTIME | OBD_MD_FLUID |
                     OBD_MD_FLGID | OBD_MD_FLFLAGS | OBD_MD_FLTYPE |
                     OBD_MD_FLMODE | OBD_MD_FLNLINK | OBD_MD_FLGENER |
-                    OBD_MD_FLATIME | OBD_MD_FLMTIME; /* bug 2020 */
+                    OBD_MD_FLATIME | OBD_MD_FLMTIME | OBD_MD_MDS; /* bug 2020 */
 
         if (!S_ISREG(inode->i_mode))
                 b->valid |= OBD_MD_FLSIZE | OBD_MD_FLBLOCKS | OBD_MD_FLATIME |
index 3689a10..4374fa6 100644 (file)
@@ -547,6 +547,7 @@ static void reconstruct_reint_create(struct mds_update_record *rec, int offset,
                 LASSERTF(child->d_inode == NULL, "BUG 3869");
                 body = lustre_msg_buf(req->rq_repmsg, offset, sizeof (*body));
                 mds_pack_dentry2fid(&body->fid1, child);
+                mds_pack_dentry2body(body, child);
         } else if (child->d_inode == NULL) {
                 DEBUG_REQ(D_ERROR, req, "parent "LPU64"/%u name %s mode %o",
                           rec->ur_fid1->id, rec->ur_fid1->generation,