From ba1aa0aba5a7754674f28db45377624ca587a41b Mon Sep 17 00:00:00 2001 From: lsy Date: Wed, 27 Sep 2006 08:10:55 +0000 Subject: [PATCH] remove capability support for split dir. --- lustre/lmv/lmv_intent.c | 26 +++++--------------------- lustre/lmv/lmv_internal.h | 5 +---- lustre/lmv/lmv_obd.c | 35 ++++++++++------------------------- lustre/lmv/lmv_object.c | 4 ++-- lustre/obdclass/lu_object.c | 3 ++- 5 files changed, 20 insertions(+), 53 deletions(-) diff --git a/lustre/lmv/lmv_intent.c b/lustre/lmv/lmv_intent.c index edd0b30..cee9b9a 100644 --- a/lustre/lmv/lmv_intent.c +++ b/lustre/lmv/lmv_intent.c @@ -185,7 +185,6 @@ int lmv_intent_open(struct obd_export *exp, struct md_op_data *op_data, { struct obd_device *obd = exp->exp_obd; struct lu_fid rpid = op_data->fid1; - struct obd_capa *oc = op_data->mod_capa1; struct lmv_obd *lmv = &obd->u.lmv; struct mdt_body *body = NULL; struct md_op_data *sop_data; @@ -218,7 +217,6 @@ repeat: (char *)op_data->name, op_data->namelen); rpid = obj->lo_inodes[mds].li_fid; - oc = obj->lo_inodes[mds].li_capa; rc = lmv_fld_lookup(lmv, &rpid, &mds); lmv_obj_put(obj); if (rc) @@ -229,7 +227,6 @@ repeat: } sop_data->fid1 = rpid; - sop_data->mod_capa1 = oc; rc = md_intent_lock(lmv->tgts[mds].ltd_exp, sop_data, lmm, lmmsize, it, flags, reqp, @@ -241,7 +238,7 @@ repeat: * the request with proper MDS. */ LASSERT(lu_fid_eq(&op_data->fid1, &rpid)); - rc = lmv_handle_split(exp, &rpid, oc); + rc = lmv_handle_split(exp, &rpid); if (rc == 0) { ptlrpc_req_finished(*reqp); /* We shoudld reallocate the FID for the object */ @@ -307,7 +304,7 @@ repeat: /* FIXME: capability for remote! */ /* wow! this is split dir, we'd like to handle it */ - obj = lmv_obj_create(exp, &body->fid1, NULL, mea); + obj = lmv_obj_create(exp, &body->fid1, mea); if (IS_ERR(obj)) GOTO(out_free_sop_data, rc = (int)PTR_ERR(obj)); } @@ -342,7 +339,6 @@ int lmv_intent_getattr(struct obd_export *exp, struct md_op_data *op_data, struct lmv_obj *obj = NULL, *obj2 = NULL; struct obd_device *obd = exp->exp_obd; struct lu_fid rpid = op_data->fid1; - struct obd_capa *oc = op_data->mod_capa1; struct lmv_obd *lmv = &obd->u.lmv; struct mdt_body *body = NULL; struct md_op_data *sop_data; @@ -403,7 +399,6 @@ int lmv_intent_getattr(struct obd_export *exp, struct md_op_data *op_data, op_data->namelen); rpid = obj->lo_inodes[mds].li_fid; - oc = obj->lo_inodes[mds].li_capa; rc = lmv_fld_lookup(lmv, &rpid, &mds); if (rc) { lmv_obj_put(obj); @@ -417,7 +412,6 @@ int lmv_intent_getattr(struct obd_export *exp, struct md_op_data *op_data, } sop_data->fid1 = rpid; - sop_data->mod_capa1 = oc; rc = md_intent_lock(lmv->tgts[mds].ltd_exp, sop_data, lmm, lmmsize, it, flags, reqp, cb_blocking, @@ -479,7 +473,7 @@ int lmv_intent_getattr(struct obd_export *exp, struct md_op_data *op_data, /* FIXME remote capability! */ /* wow! this is split dir, we'd like to handle it. */ - obj2 = lmv_obj_create(exp, &body->fid1, NULL, mea); + obj2 = lmv_obj_create(exp, &body->fid1, mea); if (IS_ERR(obj2)) GOTO(out_free_sop_data, rc = (int)PTR_ERR(obj2)); } @@ -552,7 +546,6 @@ int lmv_lookup_slaves(struct obd_export *exp, struct ptlrpc_request **reqp) for (i = 0; i < obj->lo_objcount; i++) { struct lu_fid fid = obj->lo_inodes[i].li_fid; - struct obd_capa *oc= obj->lo_inodes[i].li_capa; struct ptlrpc_request *req = NULL; struct obd_export *tgt_exp; struct lookup_intent it; @@ -570,8 +563,6 @@ int lmv_lookup_slaves(struct obd_export *exp, struct ptlrpc_request **reqp) memset(op_data, 0, sizeof(*op_data)); op_data->fid1 = fid; op_data->fid2 = fid; - op_data->mod_capa1 = oc; - op_data->mod_capa2 = oc; tgt_exp = lmv_get_export(lmv, &fid); if (IS_ERR(tgt_exp)) @@ -633,7 +624,6 @@ int lmv_intent_lookup(struct obd_export *exp, struct md_op_data *op_data, { struct obd_device *obd = exp->exp_obd; struct lu_fid rpid = op_data->fid1; - struct obd_capa *oc = op_data->mod_capa1; struct lmv_obd *lmv = &obd->u.lmv; struct mdt_body *body = NULL; struct md_op_data *sop_data; @@ -669,7 +659,6 @@ int lmv_intent_lookup(struct obd_export *exp, struct md_op_data *op_data, (char *)op_data->name, op_data->namelen); rpid = obj->lo_inodes[mds].li_fid; - oc = obj->lo_inodes[mds].li_capa; lmv_obj_put(obj); } rc = lmv_fld_lookup(lmv, &rpid, &mds); @@ -699,7 +688,6 @@ repeat: (char *)op_data->name, op_data->namelen); rpid = obj->lo_inodes[mds].li_fid; - oc = obj->lo_inodes[mds].li_capa; rc = lmv_fld_lookup(lmv, &rpid, &mds); if (rc) { lmv_obj_put(obj); @@ -712,7 +700,6 @@ repeat: } sop_data->fid1 = rpid; - sop_data->mod_capa1 = oc; rc = md_intent_lock(lmv->tgts[mds].ltd_exp, sop_data, lmm, lmmsize, it, flags, reqp, cb_blocking, extra_lock_flags); @@ -747,7 +734,7 @@ repeat: CWARN("we haven't knew about directory splitting!\n"); LASSERT(obj == NULL); - obj = lmv_obj_create(exp, &rpid, oc, NULL); + obj = lmv_obj_create(exp, &rpid, NULL); if (IS_ERR(obj)) RETURN((int)PTR_ERR(obj)); lmv_obj_put(obj); @@ -779,7 +766,7 @@ repeat: obj = lmv_obj_grab(obd, &body->fid1); if (!obj) { /* FIXME: remote capability */ - obj = lmv_obj_create(exp, &body->fid1, NULL, mea); + obj = lmv_obj_create(exp, &body->fid1, mea); if (IS_ERR(obj)) GOTO(out_free_sop_data, rc = (int)PTR_ERR(obj)); } @@ -867,7 +854,6 @@ int lmv_revalidate_slaves(struct obd_export *exp, struct ptlrpc_request **reqp, for (i = 0; i < obj->lo_objcount; i++) { struct lu_fid fid = obj->lo_inodes[i].li_fid; - struct obd_capa *oc = obj->lo_inodes[i].li_capa; struct lustre_handle *lockh = NULL; struct ptlrpc_request *req = NULL; ldlm_blocking_callback cb; @@ -907,8 +893,6 @@ int lmv_revalidate_slaves(struct obd_export *exp, struct ptlrpc_request **reqp, op_data->fid1 = fid; op_data->fid2 = fid; - op_data->mod_capa1 = oc; - op_data->mod_capa2 = oc; /* is obj valid? */ tgt_exp = lmv_get_export(lmv, &fid); diff --git a/lustre/lmv/lmv_internal.h b/lustre/lmv/lmv_internal.h index ad45117..af1454e 100644 --- a/lustre/lmv/lmv_internal.h +++ b/lustre/lmv/lmv_internal.h @@ -44,7 +44,6 @@ struct qstr { struct lmv_inode { struct lu_fid li_fid; /* id of dirobj */ - struct obd_capa *li_capa; /* fid capability */ unsigned long li_size; /* slave size value */ int li_flags; }; @@ -98,7 +97,6 @@ struct lmv_obj *lmv_obj_alloc(struct obd_device *obd, struct lmv_obj *lmv_obj_create(struct obd_export *exp, const struct lu_fid *fid, - struct obd_capa *oc, struct lmv_stripe_md *mea); int lmv_obj_delete(struct obd_export *exp, @@ -135,8 +133,7 @@ int lmv_revalidate_slaves(struct obd_export *, struct ptlrpc_request **, ldlm_blocking_callback cb_blocking, int extra_lock_flags); -int lmv_handle_split(struct obd_export *, const struct lu_fid *, - struct obd_capa *oc); +int lmv_handle_split(struct obd_export *, const struct lu_fid *); int lmv_blocking_ast(struct ldlm_lock *, struct ldlm_lock_desc *, void *, int); int lmv_fld_lookup(struct lmv_obd *lmv, const struct lu_fid *fid, diff --git a/lustre/lmv/lmv_obd.c b/lustre/lmv/lmv_obd.c index 3148f81..50f99ed 100644 --- a/lustre/lmv/lmv_obd.c +++ b/lustre/lmv/lmv_obd.c @@ -1234,8 +1234,7 @@ static int lmv_close(struct obd_export *exp, /* called in the case MDS returns -ERESTART on create on open, what means that * directory is split and its LMV presentation object has to be updated. */ -int lmv_handle_split(struct obd_export *exp, const struct lu_fid *fid, - struct obd_capa *oc) +int lmv_handle_split(struct obd_export *exp, const struct lu_fid *fid) { struct obd_device *obd = exp->exp_obd; struct lmv_obd *lmv = &obd->u.lmv; @@ -1257,7 +1256,7 @@ int lmv_handle_split(struct obd_export *exp, const struct lu_fid *fid, RETURN(PTR_ERR(tgt_exp)); /* time to update mea of parent fid */ - rc = md_getattr(tgt_exp, fid, oc, valid, mealen, &req); + rc = md_getattr(tgt_exp, fid, NULL, valid, mealen, &req); if (rc) { CERROR("md_getattr() failed, error %d\n", rc); GOTO(cleanup, rc); @@ -1272,7 +1271,7 @@ int lmv_handle_split(struct obd_export *exp, const struct lu_fid *fid, if (md.mea == NULL) GOTO(cleanup, rc = -ENODATA); - obj = lmv_obj_create(exp, fid, oc, md.mea); + obj = lmv_obj_create(exp, fid, md.mea); if (IS_ERR(obj)) rc = PTR_ERR(obj); else @@ -1313,7 +1312,6 @@ repeat: mds = raw_name2idx(obj->lo_hashtype, obj->lo_objcount, op_data->name, op_data->namelen); op_data->fid1 = obj->lo_inodes[mds].li_fid; - op_data->mod_capa1 = obj->lo_inodes[mds].li_capa; lmv_obj_put(obj); } @@ -1336,7 +1334,7 @@ repeat: * Directory got split. time to update local object and repeat * the request with proper MDS. */ - rc = lmv_handle_split(exp, &op_data->fid1, op_data->mod_capa1); + rc = lmv_handle_split(exp, &op_data->fid1); if (rc == 0) { ptlrpc_req_finished(*request); rc = lmv_alloc_fid_for_split(obd, &op_data->fid1, @@ -1533,7 +1531,6 @@ lmv_enqueue(struct obd_export *exp, int lock_type, mds = raw_name2idx(obj->lo_hashtype, obj->lo_objcount, (char *)op_data->name, op_data->namelen); op_data->fid1 = obj->lo_inodes[mds].li_fid; - op_data->mod_capa1 = obj->lo_inodes[mds].li_capa; lmv_obj_put(obj); } } @@ -1564,7 +1561,6 @@ lmv_getattr_name(struct obd_export *exp, const struct lu_fid *fid, struct obd_device *obd = exp->exp_obd; struct lmv_obd *lmv = &obd->u.lmv; struct lu_fid rid = *fid; - struct obd_capa *rcapa = oc; struct obd_export *tgt_exp; struct mdt_body *body; struct lmv_obj *obj; @@ -1584,7 +1580,6 @@ repeat: mds = raw_name2idx(obj->lo_hashtype, obj->lo_objcount, filename, namelen - 1); rid = obj->lo_inodes[mds].li_fid; - rcapa = obj->lo_inodes[mds].li_capa; lmv_obj_put(obj); } @@ -1595,7 +1590,7 @@ repeat: if (IS_ERR(tgt_exp)) RETURN(PTR_ERR(tgt_exp)); - rc = md_getattr_name(tgt_exp, &rid, rcapa, filename, namelen, valid, + rc = md_getattr_name(tgt_exp, &rid, oc, filename, namelen, valid, ea_size, request); if (rc == 0) { body = lustre_msg_buf((*request)->rq_repmsg, @@ -1615,7 +1610,7 @@ repeat: RETURN(PTR_ERR(tgt_exp)); } - rc = md_getattr_name(tgt_exp, &rid, rcapa, NULL, 1, + rc = md_getattr_name(tgt_exp, &rid, NULL, NULL, 1, valid, ea_size, &req); ptlrpc_req_finished(*request); *request = req; @@ -1623,7 +1618,7 @@ repeat: } else if (rc == -ERESTART) { /* directory got split. time to update local object and repeat * the request with proper MDS */ - rc = lmv_handle_split(exp, &rid, rcapa); + rc = lmv_handle_split(exp, &rid); if (rc == 0) { ptlrpc_req_finished(*request); goto repeat; @@ -1657,7 +1652,6 @@ static int lmv_link(struct obd_export *exp, struct md_op_data *op_data, rc = raw_name2idx(obj->lo_hashtype, obj->lo_objcount, op_data->name, op_data->namelen); op_data->fid2 = obj->lo_inodes[rc].li_fid; - op_data->mod_capa2 = obj->lo_inodes[rc].li_capa; lmv_obj_put(obj); } @@ -1731,7 +1725,6 @@ static int lmv_rename(struct obd_export *exp, struct md_op_data *op_data, mds = raw_name2idx(obj->lo_hashtype, obj->lo_objcount, (char *)new, newlen); op_data->fid2 = obj->lo_inodes[mds].li_fid; - op_data->mod_capa2 = obj->lo_inodes[mds].li_capa; CDEBUG(D_OTHER, "forward to MDS #"LPU64" ("DFID")\n", mds, PFID(&op_data->fid2)); lmv_obj_put(obj); @@ -1748,7 +1741,6 @@ static int lmv_rename(struct obd_export *exp, struct md_op_data *op_data, mds = raw_name2idx(obj->lo_hashtype, obj->lo_objcount, (char *)old, oldlen); op_data->fid1 = obj->lo_inodes[mds].li_fid; - op_data->mod_capa1 = obj->lo_inodes[mds].li_capa; CDEBUG(D_OTHER, "forward to MDS #"LPU64" ("DFID")\n", mds, PFID(&op_data->fid1)); lmv_obj_put(obj); @@ -1764,7 +1756,6 @@ static int lmv_rename(struct obd_export *exp, struct md_op_data *op_data, (char *)new, newlen); op_data->fid2 = obj->lo_inodes[mds].li_fid; - op_data->mod_capa2 = obj->lo_inodes[mds].li_capa; CDEBUG(D_OTHER, "forward to MDS #"LPU64" ("DFID")\n", mds, PFID(&op_data->fid2)); lmv_obj_put(obj); @@ -1816,8 +1807,7 @@ static int lmv_setattr(struct obd_export *exp, struct md_op_data *op_data, if (obj) { for (i = 0; i < obj->lo_objcount; i++) { - op_data->fid1 = obj->lo_inodes[i].li_fid; - op_data->mod_capa1 = obj->lo_inodes[i].li_capa; + op_data->fid1 = obj->lo_inodes[i].li_fid; tgt_exp = lmv_get_export(lmv, &op_data->fid1); if (IS_ERR(tgt_exp)) { @@ -1923,7 +1913,6 @@ static int lmv_reset_hash_seg_end (struct lmv_obd *lmv, struct lmv_obj *obj, struct lu_dirpage *next_dp; struct obd_export *tgt_exp; struct lu_fid rid; - struct obd_capa *rcapa; __u32 seg_end, max_hash = MAX_HASH_SIZE; int rc = 0; @@ -1937,7 +1926,6 @@ static int lmv_reset_hash_seg_end (struct lmv_obd *lmv, struct lmv_obj *obj, /* Get start offset from next segment */ rid = obj->lo_inodes[index].li_fid; - rcapa = obj->lo_inodes[index].li_capa; tgt_exp = lmv_get_export(lmv, &rid); if (IS_ERR(tgt_exp)) GOTO(cleanup, PTR_ERR(tgt_exp)); @@ -1948,7 +1936,7 @@ static int lmv_reset_hash_seg_end (struct lmv_obd *lmv, struct lmv_obj *obj, if (!page) GOTO(cleanup, rc = -ENOMEM); - rc = md_readpage(tgt_exp, &rid, rcapa, seg_end, page, &tmp_req); + rc = md_readpage(tgt_exp, &rid, NULL, seg_end, page, &tmp_req); if (rc) { /* E2BIG means it already reached the end of the dir, * no need reset the hash segment end */ @@ -1983,7 +1971,6 @@ static int lmv_readpage(struct obd_export *exp, const struct lu_fid *fid, struct lmv_obd *lmv = &obd->u.lmv; struct obd_export *tgt_exp; struct lu_fid rid = *fid; - struct obd_capa *rcapa = oc; struct lmv_obj *obj; int i = 0, rc; ENTRY; @@ -2006,7 +1993,6 @@ static int lmv_readpage(struct obd_export *exp, const struct lu_fid *fid, do_div(index, seg); i = (int)index; rid = obj->lo_inodes[i].li_fid; - rcapa = obj->lo_inodes[i].li_capa; lmv_obj_unlock(obj); @@ -2018,7 +2004,7 @@ static int lmv_readpage(struct obd_export *exp, const struct lu_fid *fid, if (IS_ERR(tgt_exp)) GOTO(cleanup, PTR_ERR(tgt_exp)); - rc = md_readpage(tgt_exp, &rid, rcapa, offset, page, request); + rc = md_readpage(tgt_exp, &rid, oc, offset, page, request); if (rc) GOTO(cleanup, rc); @@ -2122,7 +2108,6 @@ static int lmv_unlink(struct obd_export *exp, struct md_op_data *op_data, i = raw_name2idx(obj->lo_hashtype, obj->lo_objcount, op_data->name, op_data->namelen); op_data->fid1 = obj->lo_inodes[i].li_fid; - op_data->mod_capa1 = obj->lo_inodes[i].li_capa; lmv_obj_put(obj); CDEBUG(D_OTHER, "unlink '%*s' in "DFID" -> %u\n", op_data->namelen, op_data->name, diff --git a/lustre/lmv/lmv_object.c b/lustre/lmv/lmv_object.c index 00b1c7a..4fb9692 100644 --- a/lustre/lmv/lmv_object.c +++ b/lustre/lmv/lmv_object.c @@ -282,7 +282,7 @@ __lmv_obj_create(struct obd_device *obd, const struct lu_fid *fid, * obtained from correct MDT and used for constructing the object. */ struct lmv_obj * lmv_obj_create(struct obd_export *exp, const struct lu_fid *fid, - struct obd_capa *oc, struct lmv_stripe_md *mea) + struct lmv_stripe_md *mea) { struct obd_device *obd = exp->exp_obd; struct lmv_obd *lmv = &obd->u.lmv; @@ -312,7 +312,7 @@ lmv_obj_create(struct obd_export *exp, const struct lu_fid *fid, if (IS_ERR(tgt_exp)) GOTO(cleanup, obj = (void *)tgt_exp); - rc = md_getattr(tgt_exp, fid, oc, valid, mealen, &req); + rc = md_getattr(tgt_exp, fid, NULL, valid, mealen, &req); if (rc) { CERROR("md_getattr() failed, error %d\n", rc); GOTO(cleanup, obj = ERR_PTR(rc)); diff --git a/lustre/obdclass/lu_object.c b/lustre/obdclass/lu_object.c index e8a5031..2f5789c 100644 --- a/lustre/obdclass/lu_object.c +++ b/lustre/obdclass/lu_object.c @@ -462,7 +462,8 @@ struct lu_object *lu_object_find(const struct lu_context *ctxt, CAPA_OPC_INDEX_LOOKUP); if (rc) return ERR_PTR(rc); - o->lo_header->loh_capa = *capa; + if (capa) + o->lo_header->loh_capa = *capa; } return o; } -- 1.8.3.1