Whamcloud - gitweb
- in cmm do not call fld lookup for local seqs like root (temporary, this is a hack);
authoryury <yury>
Sat, 17 Jun 2006 08:51:32 +0000 (08:51 +0000)
committeryury <yury>
Sat, 17 Jun 2006 08:51:32 +0000 (08:51 +0000)
- make seq mgr more noisy for a while;
- make stub in fld_handle_*() functions until IAM is ready.

lustre/cmm/cmm_object.c
lustre/fid/fid_handler.c
lustre/fld/fld_handler.c
lustre/fld/fld_iam.c
lustre/mgs/mgs_llog.c
lustre/osd/osd_handler.c

index 09bea48..41db691 100644 (file)
 #include "cmm_internal.h"
 #include "mdc_internal.h"
 
+/* XXX: fix layter this hack. It exists because OSD produces fids with like
+   this: seq = ROOT_SEQ + 1, etc. */
+static int cmm_special_fid(const struct lu_fid *fid)
+{
+        if (fid_seq(fid) < LUSTRE_SEQ_SPACE_START)
+                return 1;
+        return 0;
+}
+
 #ifdef CMM_CODE
 static int cmm_fld_lookup(struct cmm_device *cm,
                           const struct lu_fid *fid)
@@ -43,7 +52,7 @@ static int cmm_fld_lookup(struct cmm_device *cm,
         __u64 mds;
         int rc;
         ENTRY;
-        
+
         LASSERT(fid_is_sane(fid));
         rc = fld_client_lookup(&cm->cmm_fld, fid_seq(fid), &mds);
         if (rc) {
@@ -73,8 +82,13 @@ struct lu_object *cmm_object_alloc(const struct lu_context *ctx,
         int mdsnum, rc;
         ENTRY;
 
-        /* get object location */
-        mdsnum = cmm_fld_lookup(lu2cmm_dev(ld), fid);
+        /* XXX: is this correct? We need this to prevent FLD lookups while CMM
+         * did not initialized yet all MDCs. */
+        if (cmm_special_fid(fid))
+                mdsnum = 0;
+        else
+                /* get object location */
+                mdsnum = cmm_fld_lookup(lu2cmm_dev(ld), fid);
 
         /* select the proper set of operations based on object location */
         if (mdsnum == lu2cmm_dev(ld)->cmm_local_num) {
@@ -703,8 +717,14 @@ static int cmm_object_init(const struct lu_context *ctx, struct lu_object *lo)
 
         ENTRY;
 
+        /* XXX: is this correct? We need this to prevent FLD lookups while CMM
+         * did not initialized yet all MDCs. */
+        if (cmm_special_fid(fid))
+                mdsnum = 0;
+        else
+                mdsnum = cmm_fld_lookup(cd, fid);
+
         /* under device can be MDD or MDC */
-        mdsnum = cmm_fld_lookup(cd, fid);
         c_dev = cmm_get_child(cd, mdsnum);
         if (c_dev == NULL) {
                 rc = -ENOENT;
index d7f357e..b7b0eac 100644 (file)
@@ -100,7 +100,7 @@ seq_client_alloc_super(struct lu_client_seq *seq)
         rc = seq_client_rpc(seq, &seq->seq_cl_range,
                             SEQ_ALLOC_SUPER);
         if (rc == 0) {
-                CDEBUG(D_INFO, "SEQ-MGR(cli): allocated super-sequence "
+                CDEBUG(D_INFO|D_WARNING, "SEQ-MGR(cli): allocated super-sequence "
                        "["LPX64"-"LPX64"]\n", seq->seq_cl_range.lr_start,
                        seq->seq_cl_range.lr_end);
         }
@@ -119,7 +119,7 @@ seq_client_alloc_meta(struct lu_client_seq *seq)
         rc = seq_client_rpc(seq, &seq->seq_cl_range,
                             SEQ_ALLOC_META);
         if (rc == 0) {
-                CDEBUG(D_INFO, "SEQ-MGR(cli): allocated meta-sequence "
+                CDEBUG(D_INFO|D_WARNING, "SEQ-MGR(cli): allocated meta-sequence "
                        "["LPX64"-"LPX64"]\n", seq->seq_cl_range.lr_start,
                        seq->seq_cl_range.lr_end);
         }
@@ -160,7 +160,7 @@ seq_client_alloc_seq(struct lu_client_seq *seq, __u64 *seqnr)
         up(&seq->seq_sem);
 
         if (rc == 0) {
-                CDEBUG(D_INFO, "SEQ-MGR(cli): allocated sequence "
+                CDEBUG(D_INFO|D_WARNING, "SEQ-MGR(cli): allocated sequence "
                        "["LPX64"]\n", *seqnr);
         }
         RETURN(rc);
@@ -266,7 +266,7 @@ out:
         if (rc)
                 seq_client_fini(seq);
         else
-                CDEBUG(D_INFO, "Client Sequence Manager initialized\n");
+                CDEBUG(D_INFO|D_WARNING, "Client Sequence Manager initialized\n");
         return rc;
 }
 EXPORT_SYMBOL(seq_client_init);
@@ -278,7 +278,7 @@ void seq_client_fini(struct lu_client_seq *seq)
                 class_export_put(seq->seq_exp);
                 seq->seq_exp = NULL;
         }
-        CDEBUG(D_INFO, "Client Sequence Manager finalized\n");
+        CDEBUG(D_INFO|D_WARNING, "Client Sequence Manager finalized\n");
         EXIT;
 }
 EXPORT_SYMBOL(seq_client_fini);
@@ -347,9 +347,8 @@ seq_server_alloc_super(struct lu_server_seq *seq,
         }
 
         if (rc == 0) {
-                CDEBUG(D_INFO, "SEQ-MGR(srv): allocated super-sequence "
-                       "["LPX64"-"LPX64"]\n", range->lr_start,
-                       range->lr_end);
+                CDEBUG(D_INFO|D_WARNING, "SEQ-MGR(srv): allocated super-sequence "
+                       "["LPX64"-"LPX64"]\n", range->lr_start, range->lr_end);
         }
         
         RETURN(rc);
@@ -396,9 +395,8 @@ seq_server_alloc_meta(struct lu_server_seq *seq,
         range->lr_end = ms_range->lr_start;
 
         if (rc == 0) {
-                CDEBUG(D_INFO, "SEQ-MGR(srv): allocated meta-sequence "
-                       "["LPX64"-"LPX64"]\n", range->lr_start,
-                       range->lr_end);
+                CDEBUG(D_INFO|D_WARNING, "SEQ-MGR(srv): allocated meta-sequence "
+                       "["LPX64"-"LPX64"]\n", range->lr_start, range->lr_end);
         }
 
         RETURN(rc);
@@ -601,7 +599,7 @@ out:
        if (rc)
                seq_server_fini(seq, ctx);
         else
-                CDEBUG(D_INFO, "Server Sequence Manager initialized\n");
+                CDEBUG(D_INFO|D_WARNING, "Server Sequence Manager initialized\n");
        return rc;
 } 
 EXPORT_SYMBOL(seq_server_init);
@@ -627,14 +625,14 @@ seq_server_fini(struct lu_server_seq *seq,
                 seq->seq_dev = NULL;
         }
         
-        CDEBUG(D_INFO, "Server Sequence Manager finalized\n");
+        CDEBUG(D_INFO|D_WARNING, "Server Sequence Manager finalized\n");
 }
 EXPORT_SYMBOL(seq_server_fini);
 
 static int fid_init(void)
 {
        ENTRY;
-        CDEBUG(D_INFO, "Lustre Sequence Manager\n");
+        CDEBUG(D_INFO|D_WARNING, "Lustre Sequence Manager\n");
        RETURN(0);
 }
 
index bda9368..a896b54 100644 (file)
@@ -211,6 +211,8 @@ int fld_client_add_export(struct lu_client_fld *fld,
 
         LASSERT(exp != NULL);
 
+        CWARN("adding export %s\n", exp->exp_client_uuid.uuid);
+        
         spin_lock(&fld->fld_lock);
         list_for_each_entry(fld_exp, &fld->fld_exports, exp_fld_chain) {
                 if (obd_uuid_equals(&fld_exp->exp_client_uuid,
@@ -397,17 +399,14 @@ fld_client_get(struct lu_client_fld *fld,
         ENTRY;
 
         fld_exp = fld_client_get_export(fld, seq);
-        if (!fld_exp) {
-                /* XXX: hack, should be fixed later */
-                rc = 0;
-                *mds = 0;
-        } else {
-                md_fld.mf_seq = seq;
-                rc = fld_client_rpc(fld_exp,
-                                    &md_fld, FLD_LOOKUP);
-                if (rc == 0)
-                        *mds = md_fld.mf_mds;
-        }
+        if (!fld_exp)
+                RETURN(-EINVAL);
+                
+        md_fld.mf_seq = seq;
+        rc = fld_client_rpc(fld_exp,
+                            &md_fld, FLD_LOOKUP);
+        if (rc == 0)
+                *mds = md_fld.mf_mds;
 
         RETURN(rc);
 }
index 6c62fa4..b9c2a19 100644 (file)
@@ -101,6 +101,8 @@ static struct lu_context_key fld_thread_key = {
         .lct_fini = fld_key_fini
 };
 
+/* XXX: disabled until IAM is ready */
+#if 0
 static struct dt_key *fld_key(const struct lu_context *ctx,
                               const fidseq_t seq)
 {
@@ -126,11 +128,13 @@ static struct dt_rec *fld_rec(const struct lu_context *ctx,
         info->fti_rec = cpu_to_be64(mds);
         RETURN((void *)&info->fti_rec);
 }
+#endif
 
 int fld_handle_insert(struct lu_server_fld *fld,
                       const struct lu_context *ctx,
                       fidseq_t seq, mdsno_t mds)
 {
+#if 0
         struct dt_device *dt = fld->fld_dt;
         struct dt_object *dt_obj = fld->fld_obj;
         struct txn_param txn;
@@ -149,12 +153,16 @@ int fld_handle_insert(struct lu_server_fld *fld,
         dt->dd_ops->dt_trans_stop(ctx, th);
 
         RETURN(rc);
+#endif
+        /* XXX: stub until IAM is ready */
+        return 0;
 }
 
 int fld_handle_delete(struct lu_server_fld *fld,
                       const struct lu_context *ctx,
                       fidseq_t seq)
 {
+#if 0
         struct dt_device *dt = fld->fld_dt;
         struct dt_object *dt_obj = fld->fld_obj;
         struct txn_param txn;
@@ -169,12 +177,16 @@ int fld_handle_delete(struct lu_server_fld *fld,
         dt->dd_ops->dt_trans_stop(ctx, th);
 
         RETURN(rc);
+#endif
+        /* XXX: stub until IAM is ready */
+        return 0;
 }
 
 int fld_handle_lookup(struct lu_server_fld *fld,
                       const struct lu_context *ctx,
                       fidseq_t seq, mdsno_t *mds)
 {
+#if 0
         struct dt_object *dt_obj = fld->fld_obj;
         struct dt_rec    *rec = fld_rec(ctx, 0);
         int rc;
@@ -185,6 +197,10 @@ int fld_handle_lookup(struct lu_server_fld *fld,
         if (rc == 0)
                 *mds = be64_to_cpu(*(__u64 *)rec);
         RETURN(rc);
+#endif
+        /* XXX: stub until IAM is ready */
+        *mds = 0;
+        return 0;
 }
 
 int fld_iam_init(struct lu_server_fld *fld,
index afe61fe..f0d4c91 100644 (file)
@@ -1293,7 +1293,7 @@ static int mgs_write_log_mds(struct obd_device *obd, struct fs_db *fsdb,
         //for_all_existing_mdt except current one
         for (i = 0; i < INDEX_MAP_SIZE * 8; i++){
                 char *mdtname;
-                if (i != mti->mti_stripe_index &&  
+                if (/*i != mti->mti_stripe_index &&*/  
                     test_bit(i,  fsdb->fsdb_mdt_index_map)) {
                         sprintf(mdt_index,"-MDT%04x",i);
                         
index d108890..2989c1f 100644 (file)
@@ -725,6 +725,7 @@ static int osd_build_fid(struct osd_device *osd,
 {
         struct inode *inode = dentry->d_inode;
         int result;
+        
         /*
          * Build fid from inode.
          */
@@ -812,79 +813,79 @@ static int osd_index_lookup(const struct lu_context *ctxt, struct dt_object *dt,
                             struct dt_rec *rec, const struct dt_key *key)
 {
         struct osd_object     *obj = osd_dt_obj(dt);
-if (!S_ISDIR(obj->oo_inode->i_mode)) {
-        struct iam_path_descr *ipd;
-        int rc;
+        if (!S_ISDIR(obj->oo_inode->i_mode)) {
+                struct iam_path_descr *ipd;
+                int rc;
 
-        ENTRY;
+                ENTRY;
 
-        LASSERT(lu_object_exists(ctxt, &dt->do_lu));
-        LASSERT(obj->oo_container.ic_object == obj->oo_inode);
+                LASSERT(lu_object_exists(ctxt, &dt->do_lu));
+                LASSERT(obj->oo_container.ic_object == obj->oo_inode);
 
-        ipd = lu_context_key_get(ctxt, obj->oo_cookie_key);
-        LASSERT(ipd != NULL);
+                ipd = lu_context_key_get(ctxt, obj->oo_cookie_key);
+                LASSERT(ipd != NULL);
 
-        rc = iam_lookup(&obj->oo_container, (const struct iam_key *)key,
-                        (struct iam_rec *)rec, ipd);
+                rc = iam_lookup(&obj->oo_container, (const struct iam_key *)key,
+                                (struct iam_rec *)rec, ipd);
 
-        RETURN(rc);
-} else {
-        struct osd_object      *obj  = osd_dt_obj(dt);
-        struct osd_device      *osd  = osd_obj2dev(obj);
-        struct osd_thread_info *info = lu_context_key_get(ctxt, &osd_key);
-        struct inode           *dir;
+                RETURN(rc);
+        } else {
+                struct osd_object      *obj  = osd_dt_obj(dt);
+                struct osd_device      *osd  = osd_obj2dev(obj);
+                struct osd_thread_info *info = lu_context_key_get(ctxt, &osd_key);
+                struct inode           *dir;
 
-        int result;
+                int result;
 
-        /*
-         * XXX temporary solution.
-         */
-        struct dentry *dentry;
-        struct dentry *parent;
+                /*
+                 * XXX temporary solution.
+                 */
+                struct dentry *dentry;
+                struct dentry *parent;
 
-        LASSERT(osd_has_index(obj));
-        LASSERT(osd->od_obj_area != NULL);
+                LASSERT(osd_has_index(obj));
+                LASSERT(osd->od_obj_area != NULL);
 
-        info->oti_str.name = (const char *)key;
-        info->oti_str.len  = strlen((const char *)key);
+                info->oti_str.name = (const char *)key;
+                info->oti_str.len  = strlen((const char *)key);
 
-        dir = obj->oo_inode;
-        LASSERT(dir->i_op != NULL && dir->i_op->lookup != NULL);
+                dir = obj->oo_inode;
+                LASSERT(dir->i_op != NULL && dir->i_op->lookup != NULL);
 
-        parent = d_alloc_root(dir);
-        if (parent == NULL)
-                return -ENOMEM;
+                parent = d_alloc_root(dir);
+                if (parent == NULL)
+                        return -ENOMEM;
 
-        dentry = d_alloc(parent, &info->oti_str);
-        if (dentry != NULL) {
-                struct dentry *d;
+                dentry = d_alloc(parent, &info->oti_str);
+                if (dentry != NULL) {
+                        struct dentry *d;
 
-                /*
-                 * XXX passing NULL for nameidata should work for
-                 * ext3/ldiskfs.
-                 */
-                d = dir->i_op->lookup(dir, dentry, NULL);
-                if (d == NULL) {
                         /*
-                         * normal case, result is in @dentry.
+                         * XXX passing NULL for nameidata should work for
+                         * ext3/ldiskfs.
                          */
-                        if (dentry->d_inode != NULL)
-                                result = osd_build_fid(osd, dentry,
-                                                       (struct lu_fid *)rec);
-                        else
-                                result = -ENOENT;
-                } else {
-                        /* What? Disconnected alias? Ppheeeww... */
-                        CERROR("Aliasing where not expected\n");
-                        result = -EIO;
-                        dput(d);
-                }
-                dput(dentry);
-        } else
-                result = -ENOMEM;
-        dput(parent);
-        return result;
-}
+                        d = dir->i_op->lookup(dir, dentry, NULL);
+                        if (d == NULL) {
+                                /*
+                                 * normal case, result is in @dentry.
+                                 */
+                                if (dentry->d_inode != NULL)
+                                        result = osd_build_fid(osd, dentry,
+                                                               (struct lu_fid *)rec);
+                                else
+                                        result = -ENOENT;
+                        } else {
+                                /* What? Disconnected alias? Ppheeeww... */
+                                CERROR("Aliasing where not expected\n");
+                                result = -EIO;
+                                dput(d);
+                        }
+                        dput(dentry);
+                } else
+                        result = -ENOMEM;
+                dput(parent);
+                return result;
+        }
 }
 
 static int osd_add_rec(struct osd_thread_info *info, struct osd_device *dev,