From: yury Date: Sat, 17 Jun 2006 08:51:32 +0000 (+0000) Subject: - in cmm do not call fld lookup for local seqs like root (temporary, this is a hack); X-Git-Tag: v1_8_0_110~486^2~1619 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=035dc63212dbfe46232c15109bfe411c8375110e;p=fs%2Flustre-release.git - in cmm do not call fld lookup for local seqs like root (temporary, this is a hack); - make seq mgr more noisy for a while; - make stub in fld_handle_*() functions until IAM is ready. --- diff --git a/lustre/cmm/cmm_object.c b/lustre/cmm/cmm_object.c index 09bea48..41db691 100644 --- a/lustre/cmm/cmm_object.c +++ b/lustre/cmm/cmm_object.c @@ -36,6 +36,15 @@ #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; diff --git a/lustre/fid/fid_handler.c b/lustre/fid/fid_handler.c index d7f357e..b7b0eac 100644 --- a/lustre/fid/fid_handler.c +++ b/lustre/fid/fid_handler.c @@ -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); } diff --git a/lustre/fld/fld_handler.c b/lustre/fld/fld_handler.c index bda9368..a896b54 100644 --- a/lustre/fld/fld_handler.c +++ b/lustre/fld/fld_handler.c @@ -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); } diff --git a/lustre/fld/fld_iam.c b/lustre/fld/fld_iam.c index 6c62fa4..b9c2a19 100644 --- a/lustre/fld/fld_iam.c +++ b/lustre/fld/fld_iam.c @@ -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, diff --git a/lustre/mgs/mgs_llog.c b/lustre/mgs/mgs_llog.c index afe61fe..f0d4c91 100644 --- a/lustre/mgs/mgs_llog.c +++ b/lustre/mgs/mgs_llog.c @@ -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); diff --git a/lustre/osd/osd_handler.c b/lustre/osd/osd_handler.c index d108890..2989c1f 100644 --- a/lustre/osd/osd_handler.c +++ b/lustre/osd/osd_handler.c @@ -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,