From: yury Date: Tue, 25 Apr 2006 13:13:57 +0000 (+0000) Subject: - ->lo_objs renamed to ->lo_inodes in struct lmv_obj; X-Git-Tag: v1_8_0_110~486^2~1932 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=64b4e10e2c9e841d97ac8c0a0509b47220d9470e;p=fs%2Flustre-release.git - ->lo_objs renamed to ->lo_inodes in struct lmv_obj; - some renames in methods; - lmv_create() and lmv_brw() disabled as they are only used on server; --- diff --git a/lustre/lmv/lmv_intent.c b/lustre/lmv/lmv_intent.c index b41fc87..20e9328 100644 --- a/lustre/lmv/lmv_intent.c +++ b/lustre/lmv/lmv_intent.c @@ -158,7 +158,7 @@ repeat: CDEBUG(D_OTHER, "forward to MDS #%u ("DFID3")\n", mds, PFID3(&rpid)); - rpid = obj->lo_objs[mds].li_fid; + rpid = obj->lo_inodes[mds].li_fid; lmv_obj_put(obj); } @@ -276,7 +276,7 @@ int lmv_intent_getattr(struct obd_export *exp, struct lu_fid *pid, /* in fact, we need not this with current intent_lock(), * but it may change some day */ if (!lu_fid_eq(pid, cid)){ - rpid = obj->lo_objs[mds].li_fid; + rpid = obj->lo_inodes[mds].li_fid; mds = lmv_fld_lookup(obd, &rpid); } lmv_obj_put(obj); @@ -291,7 +291,7 @@ int lmv_intent_getattr(struct obd_export *exp, struct lu_fid *pid, /* directory is already splitted. calculate mds */ mds = raw_name2idx(obj->lo_hashtype, obj->lo_objcount, (char *)name, len); - rpid = obj->lo_objs[mds].li_fid; + rpid = obj->lo_inodes[mds].li_fid; mds = lmv_fld_lookup(obd, &rpid); lmv_obj_put(obj); @@ -378,10 +378,10 @@ int lmv_intent_getattr(struct obd_export *exp, struct lu_fid *pid, RETURN(rc); } -void lmv_update_body_from_obj(struct mdt_body *body, struct lmv_inode *obj) +void lmv_update_body(struct mdt_body *body, struct lmv_inode *lino) { /* update size */ - body->size += obj->li_size; + body->size += lino->li_size; } /* this is not used currently */ @@ -423,7 +423,7 @@ int lmv_lookup_slaves(struct obd_export *exp, struct ptlrpc_request **reqp) lmv_obj_lock(obj); for (i = 0; i < obj->lo_objcount; i++) { - struct lu_fid fid = obj->lo_objs[i].li_fid; + struct lu_fid fid = obj->lo_inodes[i].li_fid; struct md_op_data op_data = { { 0 } }; struct ptlrpc_request *req = NULL; struct lookup_intent it; @@ -445,7 +445,7 @@ int lmv_lookup_slaves(struct obd_export *exp, struct ptlrpc_request **reqp) mds = lmv_fld_lookup(obd, &fid); rc = md_intent_lock(lmv->tgts[mds].ltd_exp, &op_data, NULL, 0, &it, 0, &req, - lmv_dirobj_blocking_ast, 0); + lmv_blocking_ast, 0); lockh = (struct lustre_handle *)&it.d.lustre.it_lock_handle; if (rc > 0 && req == NULL) { @@ -467,17 +467,17 @@ int lmv_lookup_slaves(struct obd_export *exp, struct ptlrpc_request **reqp) body2 = lustre_msg_buf(req->rq_repmsg, 1, sizeof(*body2)); LASSERT(body2); - obj->lo_objs[i].li_size = body2->size; + obj->lo_inodes[i].li_size = body2->size; CDEBUG(D_OTHER, "fresh: %lu\n", - (unsigned long)obj->lo_objs[i].li_size); + (unsigned long)obj->lo_inodes[i].li_size); LDLM_LOCK_PUT(lock); if (req) ptlrpc_req_finished(req); release_lock: - lmv_update_body_from_obj(body, obj->lo_objs + i); + lmv_update_body(body, obj->lo_inodes + i); if (it.d.lustre.it_lock_mode) ldlm_lock_decref(lockh, it.d.lustre.it_lock_mode); @@ -523,7 +523,7 @@ int lmv_intent_lookup(struct obd_export *exp, struct lu_fid *pid, if (obj) { mds = raw_name2idx(obj->lo_hashtype, obj->lo_objcount, (char *)name, len); - rpid = obj->lo_objs[mds].li_fid; + rpid = obj->lo_inodes[mds].li_fid; lmv_obj_put(obj); } mds = lmv_fld_lookup(obd, &rpid); @@ -546,7 +546,7 @@ repeat: /* directory is already splitted. calculate mds */ mds = raw_name2idx(obj->lo_hashtype, obj->lo_objcount, (char *)name, len); - rpid = obj->lo_objs[mds].li_fid; + rpid = obj->lo_inodes[mds].li_fid; mds = lmv_fld_lookup(obd, &rpid); } lmv_obj_put(obj); @@ -693,7 +693,7 @@ int lmv_revalidate_slaves(struct obd_export *exp, struct ptlrpc_request **reqp, lmv_obj_lock(obj); for (i = 0; i < obj->lo_objcount; i++) { - struct lu_fid fid = obj->lo_objs[i].li_fid; + struct lu_fid fid = obj->lo_inodes[i].li_fid; struct md_op_data op_data = { { 0 } }; struct lustre_handle *lockh = NULL; struct ptlrpc_request *req = NULL; @@ -707,7 +707,7 @@ int lmv_revalidate_slaves(struct obd_export *exp, struct ptlrpc_request **reqp, memset(&it, 0, sizeof(it)); it.it_op = IT_GETATTR; - cb = lmv_dirobj_blocking_ast; + cb = lmv_blocking_ast; if (lu_fid_eq(&fid, &obj->lo_fid)) { if (master_valid) { @@ -777,15 +777,15 @@ int lmv_revalidate_slaves(struct obd_export *exp, struct ptlrpc_request **reqp, LASSERT(body); update: - obj->lo_objs[i].li_size = body->size; + obj->lo_inodes[i].li_size = body->size; CDEBUG(D_OTHER, "fresh: %lu\n", - (unsigned long)obj->lo_objs[i].li_size); + (unsigned long)obj->lo_inodes[i].li_size); if (req) ptlrpc_req_finished(req); release_lock: - size += obj->lo_objs[i].li_size; + size += obj->lo_inodes[i].li_size; if (it.d.lustre.it_lock_mode) ldlm_lock_decref(lockh, it.d.lustre.it_lock_mode); diff --git a/lustre/lmv/lmv_internal.h b/lustre/lmv/lmv_internal.h index 8aa3a12..228c3e4 100644 --- a/lustre/lmv/lmv_internal.h +++ b/lustre/lmv/lmv_internal.h @@ -53,7 +53,7 @@ struct lmv_obj { void *lo_update; /* bitmap of status (up-to-date) */ __u32 lo_hashtype; int lo_objcount; /* number of slaves */ - struct lmv_inode *lo_objs; /* array of dirobjs */ + struct lmv_inode *lo_inodes; /* array of sub-objs */ struct obd_device *lo_obd; /* pointer to LMV itself */ }; @@ -125,8 +125,8 @@ int lmv_revalidate_slaves(struct obd_export *, struct ptlrpc_request **, int extra_lock_flags); int lmv_handle_split(struct obd_export *, struct lu_fid *); -int lmv_dirobj_blocking_ast(struct ldlm_lock *, struct ldlm_lock_desc *, - void *, int); +int lmv_blocking_ast(struct ldlm_lock *, struct ldlm_lock_desc *, + void *, int); int lmv_fld_lookup(struct obd_device *obd, struct lu_fid *fid); static inline struct lmv_stripe_md * diff --git a/lustre/lmv/lmv_obd.c b/lustre/lmv/lmv_obd.c index 06692cf..9739b4d 100644 --- a/lustre/lmv/lmv_obd.c +++ b/lustre/lmv/lmv_obd.c @@ -846,10 +846,10 @@ static int lmv_getattr(struct obd_export *exp, struct lu_fid *fid, } /* skip master obj. */ - if (lu_fid_eq(&obj->lo_fid, &obj->lo_objs[i].li_fid)) + if (lu_fid_eq(&obj->lo_fid, &obj->lo_inodes[i].li_fid)) continue; - body->size += obj->lo_objs[i].li_size; + body->size += obj->lo_inodes[i].li_size; } lmv_obj_unlock(obj); @@ -984,7 +984,7 @@ repeat: if (obj) { mds = raw_name2idx(obj->lo_hashtype, obj->lo_objcount, op_data->name, op_data->namelen); - op_data->fid1 = obj->lo_objs[mds].li_fid; + op_data->fid1 = obj->lo_inodes[mds].li_fid; lmv_obj_put(obj); } @@ -1174,7 +1174,7 @@ lmv_enqueue(struct obd_export *exp, int lock_type, * name */ mds = raw_name2idx(obj->lo_hashtype, obj->lo_objcount, (char *)op_data->name, op_data->namelen); - op_data->fid1 = obj->lo_objs[mds].li_fid; + op_data->fid1 = obj->lo_inodes[mds].li_fid; lmv_obj_put(obj); } } @@ -1219,7 +1219,7 @@ repeat: /* directory is splitted. look for right mds for this name */ mds = raw_name2idx(obj->lo_hashtype, obj->lo_objcount, filename, namelen - 1); - rid = obj->lo_objs[mds].li_fid; + rid = obj->lo_inodes[mds].li_fid; lmv_obj_put(obj); } @@ -1281,7 +1281,7 @@ static int lmv_link(struct obd_export *exp, struct md_op_data *op_data, if (obj) { rc = raw_name2idx(obj->lo_hashtype, obj->lo_objcount, op_data->name, op_data->namelen); - op_data->fid2 = obj->lo_objs[rc].li_fid; + op_data->fid2 = obj->lo_inodes[rc].li_fid; lmv_obj_put(obj); } @@ -1343,7 +1343,7 @@ static int lmv_rename(struct obd_export *exp, struct md_op_data *op_data, if (obj) { mds = raw_name2idx(obj->lo_hashtype, obj->lo_objcount, (char *)new, newlen); - op_data->fid2 = obj->lo_objs[mds].li_fid; + op_data->fid2 = obj->lo_inodes[mds].li_fid; CDEBUG(D_OTHER, "forward to MDS #%u ("DFID3")\n", mds, PFID3(&op_data->fid2)); lmv_obj_put(obj); @@ -1359,7 +1359,7 @@ 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_objs[mds].li_fid; + op_data->fid1 = obj->lo_inodes[mds].li_fid; CDEBUG(D_OTHER, "forward to MDS #%u ("DFID3")\n", mds, PFID3(&op_data->fid1)); lmv_obj_put(obj); @@ -1374,7 +1374,7 @@ 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_objs[mds].li_fid; + op_data->fid2 = obj->lo_inodes[mds].li_fid; CDEBUG(D_OTHER, "forward to MDS #%u ("DFID3")\n", mds, PFID3(&op_data->fid2)); lmv_obj_put(obj); @@ -1417,14 +1417,14 @@ 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_objs[i].li_fid; + op_data->fid1 = obj->lo_inodes[i].li_fid; mds = lmv_fld_lookup(obd, &op_data->fid1); rc = md_setattr(lmv->tgts[mds].ltd_exp, op_data, iattr, ea, ealen, ea2, ea2len, &req); - if (lu_fid_eq(&obj->lo_fid, &obj->lo_objs[i].li_fid)) { + if (lu_fid_eq(&obj->lo_fid, &obj->lo_inodes[i].li_fid)) { /* * this is master object and this request should * be returned back to llite. @@ -1470,9 +1470,12 @@ static int lmv_sync(struct obd_export *exp, struct lu_fid *fid, RETURN(rc); } -int lmv_dirobj_blocking_ast(struct ldlm_lock *lock, - struct ldlm_lock_desc *desc, - void *data, int flag) +/* main purpose of LMV blocking ast is to remove splitted directory + * LMV presentation object (struct lmv_obj) attached to the lock + * being revoked. */ +int lmv_blocking_ast(struct ldlm_lock *lock, + struct ldlm_lock_desc *desc, + void *data, int flag) { struct lustre_handle lockh; struct lmv_obj *obj; @@ -1551,11 +1554,11 @@ static int lmv_readpage(struct obd_export *exp, struct lu_fid *fid, /* find dirobj containing page with requested offset. */ for (i = 0; i < obj->lo_objcount; i++) { - if (offset < obj->lo_objs[i].li_size) + if (offset < obj->lo_inodes[i].li_size) break; - offset -= obj->lo_objs[i].li_size; + offset -= obj->lo_inodes[i].li_size; } - rid = obj->lo_objs[i].li_fid; + rid = obj->lo_inodes[i].li_fid; lmv_obj_unlock(obj); lmv_obj_put(obj); @@ -1654,7 +1657,7 @@ static int lmv_unlink(struct obd_export *exp, struct md_op_data *op_data, if (obj) { i = raw_name2idx(obj->lo_hashtype, obj->lo_objcount, op_data->name, op_data->namelen); - op_data->fid1 = obj->lo_objs[i].li_fid; + op_data->fid1 = obj->lo_inodes[i].li_fid; lmv_obj_put(obj); } CDEBUG(D_OTHER, "unlink '%*s' in "DFID3" -> %u\n", @@ -1669,138 +1672,6 @@ static int lmv_unlink(struct obd_export *exp, struct md_op_data *op_data, RETURN(rc); } -static int lmv_obd_create_single(struct obd_export *exp, struct obdo *oa, - struct lov_stripe_md **ea, - struct obd_trans_info *oti) -{ - struct obd_device *obd = exp->exp_obd; - struct lmv_obd *lmv = &obd->u.lmv; - struct lov_stripe_md obj_md; - struct lov_stripe_md *obj_mdp = &obj_md; - int rc = 0; - ENTRY; - - LASSERT(ea == NULL); - LASSERT(oa->o_mds < lmv->desc.ld_tgt_count); - - rc = obd_create(lmv->tgts[oa->o_mds].ltd_exp, - oa, &obj_mdp, oti); - - RETURN(rc); -} - -/* - * to be called from MDS only. @oa should have correct store cookie and o_fid - * values for "master" object, as it will be used. - */ -int lmv_obd_create(struct obd_export *exp, struct obdo *oa, - struct lov_stripe_md **ea, struct obd_trans_info *oti) -{ - struct obd_device *obd = exp->exp_obd; - struct lmv_obd *lmv = &obd->u.lmv; - struct lmv_stripe_md *mea; - struct lu_fid mid; - int i, c, rc = 0; - ENTRY; - - rc = lmv_check_connect(obd); - if (rc) - RETURN(rc); - - LASSERT(oa != NULL); - - if (ea == NULL) { - rc = lmv_obd_create_single(exp, oa, NULL, oti); - if (rc) - CERROR("Can't create object, rc = %d\n", rc); - RETURN(rc); - } - - if (*ea == NULL) { - rc = obd_alloc_diskmd(exp, (struct lov_mds_md **)ea); - if (rc < 0) { - CERROR("obd_alloc_diskmd() failed, error %d\n", - rc); - RETURN(rc); - } else - rc = 0; - - if (*ea == NULL) - RETURN(-ENOMEM); - } - - /* here we should take care about splitted dir, so store cookie and fid - * for "master" object should already be allocated and passed in @oa. */ - LASSERT(oa->o_id != 0); - LASSERT(oa->o_fid != 0); - - /* save "master" object fid */ - obdo2fid(oa, &mid); - - mea = (struct lmv_stripe_md *)*ea; - mea->mea_master = -1; - mea->mea_magic = MEA_MAGIC_ALL_CHARS; - - if (!mea->mea_count || mea->mea_count > lmv->desc.ld_tgt_count) - mea->mea_count = lmv->desc.ld_tgt_count; - - for (i = 0, c = 0; c < mea->mea_count && i < lmv->desc.ld_tgt_count; i++) { - struct lov_stripe_md obj_md; - struct lov_stripe_md *obj_mdp = &obj_md; - - if (lmv->tgts[i].ltd_exp == NULL) { - /* this is "master" MDS */ - mea->mea_master = i; - mea->mea_ids[c] = mid; - c++; - continue; - } - - /* - * "master" MDS should always be part of stripped dir, - * so scan for it. - */ - if (mea->mea_master == -1 && c == mea->mea_count - 1) - continue; - - oa->o_valid = OBD_MD_FLGENER | OBD_MD_FLTYPE | OBD_MD_FLMODE | - OBD_MD_FLUID | OBD_MD_FLGID | OBD_MD_FLID; - - rc = obd_create(lmv->tgts[c].ltd_exp, oa, &obj_mdp, oti); - if (rc) { - CERROR("obd_create() failed on MDT target %d, " - "error %d\n", c, rc); - RETURN(rc); - } - - CDEBUG(D_OTHER, "dirobj at mds %d: "LPU64"/%u\n", - i, oa->o_id, oa->o_generation); - - - /* - * here, when object is created (or it is master and was passed - * from caller) on desired MDS we save its fid to local mea_ids. - */ - LASSERT(oa->o_fid); - - /* - * store cookie should be defined here for both cases (master - * object and not master), because master is already created. - */ - LASSERT(oa->o_id); - - /* fill mea by store cookie and fid */ - obdo2fid(oa, &mea->mea_ids[c]); - c++; - } - LASSERT(c == mea->mea_count); - - CDEBUG(D_OTHER, "%d dirobjects created\n", - (int)mea->mea_count); - - RETURN(rc); -} - static int lmv_llog_init(struct obd_device *obd, struct obd_device *tgt, int count, struct llog_catid *logid) { @@ -2161,12 +2032,146 @@ int lmv_unpackmd(struct obd_export *exp, struct lov_stripe_md **lsmp, RETURN(mea_size); } +#if 0 +/* lmv_create() and lmv_brw() is needed anymore as they purely server stuff and + * lmv is going to use only on client. */ +static int lmv_obd_create_single(struct obd_export *exp, struct obdo *oa, + struct lov_stripe_md **ea, + struct obd_trans_info *oti) +{ + struct obd_device *obd = exp->exp_obd; + struct lmv_obd *lmv = &obd->u.lmv; + struct lov_stripe_md obj_md; + struct lov_stripe_md *obj_mdp = &obj_md; + int rc = 0; + ENTRY; + + LASSERT(ea == NULL); + LASSERT(oa->o_mds < lmv->desc.ld_tgt_count); + + rc = obd_create(lmv->tgts[oa->o_mds].ltd_exp, + oa, &obj_mdp, oti); + + RETURN(rc); +} + +/* + * to be called from MDS only. @oa should have correct store cookie and o_fid + * values for "master" object, as it will be used. + */ +int lmv_obd_create(struct obd_export *exp, struct obdo *oa, + struct lov_stripe_md **ea, struct obd_trans_info *oti) +{ + struct obd_device *obd = exp->exp_obd; + struct lmv_obd *lmv = &obd->u.lmv; + struct lmv_stripe_md *mea; + struct lu_fid mid; + int i, c, rc = 0; + ENTRY; + + rc = lmv_check_connect(obd); + if (rc) + RETURN(rc); + + LASSERT(oa != NULL); + + if (ea == NULL) { + rc = lmv_obd_create_single(exp, oa, NULL, oti); + if (rc) + CERROR("Can't create object, rc = %d\n", rc); + RETURN(rc); + } + + if (*ea == NULL) { + rc = obd_alloc_diskmd(exp, (struct lov_mds_md **)ea); + if (rc < 0) { + CERROR("obd_alloc_diskmd() failed, error %d\n", + rc); + RETURN(rc); + } else + rc = 0; + + if (*ea == NULL) + RETURN(-ENOMEM); + } + + /* here we should take care about splitted dir, so store cookie and fid + * for "master" object should already be allocated and passed in @oa. */ + LASSERT(oa->o_id != 0); + LASSERT(oa->o_fid != 0); + + /* save "master" object fid */ + obdo2fid(oa, &mid); + + mea = (struct lmv_stripe_md *)*ea; + mea->mea_master = -1; + mea->mea_magic = MEA_MAGIC_ALL_CHARS; + + if (!mea->mea_count || mea->mea_count > lmv->desc.ld_tgt_count) + mea->mea_count = lmv->desc.ld_tgt_count; + + for (i = 0, c = 0; c < mea->mea_count && i < lmv->desc.ld_tgt_count; i++) { + struct lov_stripe_md obj_md; + struct lov_stripe_md *obj_mdp = &obj_md; + + if (lmv->tgts[i].ltd_exp == NULL) { + /* this is "master" MDS */ + mea->mea_master = i; + mea->mea_ids[c] = mid; + c++; + continue; + } + + /* + * "master" MDS should always be part of stripped dir, + * so scan for it. + */ + if (mea->mea_master == -1 && c == mea->mea_count - 1) + continue; + + oa->o_valid = OBD_MD_FLGENER | OBD_MD_FLTYPE | OBD_MD_FLMODE | + OBD_MD_FLUID | OBD_MD_FLGID | OBD_MD_FLID; + + rc = obd_create(lmv->tgts[c].ltd_exp, oa, &obj_mdp, oti); + if (rc) { + CERROR("obd_create() failed on MDT target %d, " + "error %d\n", c, rc); + RETURN(rc); + } + + CDEBUG(D_OTHER, "dirobj at mds %d: "LPU64"/%u\n", + i, oa->o_id, oa->o_generation); + + + /* + * here, when object is created (or it is master and was passed + * from caller) on desired MDS we save its fid to local mea_ids. + */ + LASSERT(oa->o_fid); + + /* + * store cookie should be defined here for both cases (master + * object and not master), because master is already created. + */ + LASSERT(oa->o_id); + + /* fill mea by store cookie and fid */ + obdo2fid(oa, &mea->mea_ids[c]); + c++; + } + LASSERT(c == mea->mea_count); + + CDEBUG(D_OTHER, "%d dirobjects created\n", + (int)mea->mea_count); + + RETURN(rc); +} + int lmv_brw(int rw, struct obd_export *exp, struct obdo *oa, struct lov_stripe_md *ea, obd_count oa_bufs, struct brw_page *pgarr, struct obd_trans_info *oti) { /* splitting is not needed in lmv */ -#if 0 struct obd_device *obd = exp->exp_obd; struct lmv_obd *lmv = &obd->u.lmv; struct lmv_stripe_md *mea = (struct lmv_stripe_md *) ea; @@ -2184,9 +2189,8 @@ int lmv_brw(int rw, struct obd_export *exp, struct obdo *oa, err = obd_brw(rw, lmv->tgts[oa->o_mds].ltd_exp, oa, NULL, oa_bufs, pgarr, oti); RETURN(err); -#endif - return -EINVAL; } +#endif static int lmv_cancel_unused(struct obd_export *exp, struct lov_stripe_md *lsm, @@ -2276,10 +2280,8 @@ struct obd_ops lmv_obd_ops = { .o_llog_finish = lmv_llog_finish, .o_get_info = lmv_get_info, .o_set_info = lmv_set_info, - .o_create = lmv_obd_create, .o_packmd = lmv_packmd, .o_unpackmd = lmv_unpackmd, - .o_brw = lmv_brw, .o_notify = lmv_notify, .o_iocontrol = lmv_iocontrol, .o_cancel_unused = lmv_cancel_unused, diff --git a/lustre/lmv/lmv_object.c b/lustre/lmv/lmv_object.c index 034e100..8663d57 100644 --- a/lustre/lmv/lmv_object.c +++ b/lustre/lmv/lmv_object.c @@ -85,18 +85,18 @@ lmv_obj_alloc(struct obd_device *obd, obj_size = sizeof(struct lmv_inode) * lmv->desc.ld_tgt_count; - OBD_ALLOC(obj->lo_objs, obj_size); - if (!obj->lo_objs) + OBD_ALLOC(obj->lo_inodes, obj_size); + if (!obj->lo_inodes) goto err_obj; - memset(obj->lo_objs, 0, obj_size); + memset(obj->lo_inodes, 0, obj_size); /* put all ids in */ for (i = 0; i < mea->mea_count; i++) { CDEBUG(D_OTHER, "subobj "DFID3"\n", PFID3(&mea->mea_ids[i])); - obj->lo_objs[i].li_fid = mea->mea_ids[i]; - LASSERT(fid_num(&obj->lo_objs[i].li_fid)); + obj->lo_inodes[i].li_fid = mea->mea_ids[i]; + LASSERT(fid_num(&obj->lo_inodes[i].li_fid)); } return obj; @@ -118,7 +118,7 @@ lmv_obj_free(struct lmv_obj *obj) obj_size = sizeof(struct lmv_inode) * lmv->desc.ld_tgt_count; - OBD_FREE(obj->lo_objs, obj_size); + OBD_FREE(obj->lo_inodes, obj_size); OBD_SLAB_FREE(obj, obj_cache, sizeof(*obj)); atomic_dec(&obj_cache_count); }