From: wangdi Date: Wed, 25 Oct 2006 18:06:17 +0000 (+0000) Subject: Branch: b_new_cmd X-Git-Tag: v1_8_0_110~486^2~344 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=c6d8f126a33e1746d62ed0b91f7075c58269d520;p=fs%2Flustre-release.git Branch: b_new_cmd serval group number fixes in ost, which may fix read-ahead bug in cmd37 --- diff --git a/lustre/llite/rw.c b/lustre/llite/rw.c index 0346c61..7fbcaba 100644 --- a/lustre/llite/rw.c +++ b/lustre/llite/rw.c @@ -179,6 +179,7 @@ void ll_truncate(struct inode *inode) oinfo.oi_policy.l_extent.end = OBD_OBJECT_EOF; oinfo.oi_oa = &oa; oa.o_id = lli->lli_smd->lsm_object_id; + oa.o_gr = lli->lli_smd->lsm_object_gr; oa.o_valid = OBD_MD_FLID | OBD_MD_FLGROUP; obdo_from_inode(&oa, inode, OBD_MD_FLTYPE | OBD_MD_FLMODE | diff --git a/lustre/lov/lov_internal.h b/lustre/lov/lov_internal.h index 06a0828..3dfdd75 100644 --- a/lustre/lov/lov_internal.h +++ b/lustre/lov/lov_internal.h @@ -62,6 +62,7 @@ struct lov_async_page { int lap_stripe; obd_off lap_sub_offset; obd_id lap_loi_id; + obd_gr lap_loi_gr; void *lap_sub_cookie; struct obd_async_page_ops *lap_caller_ops; void *lap_caller_data; diff --git a/lustre/lov/lov_obd.c b/lustre/lov/lov_obd.c index 7ca3b77..9c278f8 100644 --- a/lustre/lov/lov_obd.c +++ b/lustre/lov/lov_obd.c @@ -1608,6 +1608,8 @@ static void lov_ap_fill_obdo(void *data, int cmd, struct obdo *oa) lap->lap_caller_ops->ap_fill_obdo(lap->lap_caller_data, cmd, oa); /* XXX woah, shouldn't we be altering more here? size? */ oa->o_id = lap->lap_loi_id; + oa->o_gr = lap->lap_loi_gr; + oa->o_valid |= OBD_MD_FLGROUP; oa->o_stripe_idx = lap->lap_stripe; } @@ -1687,7 +1689,9 @@ int lov_prep_async_page(struct obd_export *exp, struct lov_stripe_md *lsm, /* so the callback doesn't need the lsm */ lap->lap_loi_id = loi->loi_id; - + lap->lap_loi_gr = lsm->lsm_object_gr; + LASSERT(lsm->lsm_object_gr > 0); + lap->lap_sub_cookie = (void *)lap + size_round(sizeof(*lap)); rc = obd_prep_async_page(lov->lov_tgts[loi->loi_ost_idx]->ltd_exp, diff --git a/lustre/obdfilter/filter_io.c b/lustre/obdfilter/filter_io.c index a6645d4..62f75a8 100644 --- a/lustre/obdfilter/filter_io.c +++ b/lustre/obdfilter/filter_io.c @@ -724,7 +724,8 @@ static int filter_commitrw_read(struct obd_export *exp, struct obdo *oa, struct obd_trans_info *oti, int rc) { struct inode *inode = NULL; - struct ldlm_res_id res_id = { .name = { obj->ioo_id } }; + struct ldlm_res_id res_id = { .name = { obj->ioo_id, 0, + obj->ioo_gr, 0} }; struct ldlm_resource *resource = NULL; struct ldlm_namespace *ns = exp->exp_obd->obd_namespace; ENTRY; diff --git a/lustre/ost/ost_handler.c b/lustre/ost/ost_handler.c index 5ffe2d0..57ead88 100644 --- a/lustre/ost/ost_handler.c +++ b/lustre/ost/ost_handler.c @@ -184,7 +184,7 @@ static int ost_punch_lock_get(struct obd_export *exp, struct obdo *oa, struct lustre_handle *lh) { int flags; - struct ldlm_res_id res_id = { .name = { oa->o_id } }; + struct ldlm_res_id res_id = { .name = { oa->o_id, 0, oa->o_gr, 0} }; ldlm_policy_data_t policy; __u64 start; __u64 finis; @@ -520,7 +520,8 @@ static int ost_brw_lock_get(int mode, struct obd_export *exp, { int flags = 0; int nrbufs = obj->ioo_bufcnt; - struct ldlm_res_id res_id = { .name = { obj->ioo_id } }; + struct ldlm_res_id res_id = { .name = { obj->ioo_id, 0, + obj->ioo_gr, 0} }; ldlm_policy_data_t policy; int i; @@ -608,7 +609,8 @@ static int ost_prolong_locks_iter(struct ldlm_lock *lock, void *data) static void ost_prolong_locks(struct obd_export *exp, struct obd_ioobj *obj, struct niobuf_remote *nb, ldlm_mode_t mode) { - struct ldlm_res_id res_id = { .name = { obj->ioo_id } }; + struct ldlm_res_id res_id = { .name = { obj->ioo_id, 0, + obj->ioo_gr, 0} }; int nrbufs = obj->ioo_bufcnt; struct ost_prolong_data opd;