From 9d42f61419c664a5a7f4efd3cb27d9bfd975b976 Mon Sep 17 00:00:00 2001 From: Fan Yong Date: Fri, 21 May 2010 10:30:51 +0800 Subject: [PATCH] b=22730 1.8 client should use loi_gr when communicate with 2.0 server 1.8 client should use loi_gr when communicate with 2.0 server. i=yong.fan i=johann --- lustre/lov/lov_internal.h | 1 + lustre/lov/lov_merge.c | 1 + lustre/lov/lov_obd.c | 3 +++ lustre/lov/lov_qos.c | 2 ++ lustre/lov/lov_request.c | 10 ++++++++++ 5 files changed, 17 insertions(+) diff --git a/lustre/lov/lov_internal.h b/lustre/lov/lov_internal.h index 976b064..b76027c 100644 --- a/lustre/lov/lov_internal.h +++ b/lustre/lov/lov_internal.h @@ -93,6 +93,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_merge.c b/lustre/lov/lov_merge.c index c30f5f1..73a5bcf 100644 --- a/lustre/lov/lov_merge.c +++ b/lustre/lov/lov_merge.c @@ -177,6 +177,7 @@ void lov_merge_attrs(struct obdo *tgt, struct obdo *src, obd_flag valid, } else { memcpy(tgt, src, sizeof(*tgt)); tgt->o_id = lsm->lsm_object_id; + tgt->o_gr = lsm->lsm_object_gr; if (valid & OBD_MD_FLSIZE) tgt->o_size = lov_stripe_size(lsm,src->o_size,stripeno); *set = 1; diff --git a/lustre/lov/lov_obd.c b/lustre/lov/lov_obd.c index ee7bc30..ecabebb 100644 --- a/lustre/lov/lov_obd.c +++ b/lustre/lov/lov_obd.c @@ -1866,6 +1866,7 @@ 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_stripe_idx = lap->lap_stripe; } @@ -1940,6 +1941,7 @@ 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 = loi->loi_gr; lap->lap_sub_cookie = (void *)lap + size_round(sizeof(*lap)); @@ -2826,6 +2828,7 @@ static int lov_fiemap(struct lov_obd *lov, __u32 keylen, void *key, fm_local->fm_flags = fiemap->fm_flags; fm_key->oa.o_id = lsm->lsm_oinfo[cur_stripe]->loi_id; + fm_key->oa.o_gr = lsm->lsm_oinfo[cur_stripe]->loi_gr; ost_index = lsm->lsm_oinfo[cur_stripe]->loi_ost_idx; if (ost_index < 0 || ost_index >=lov->desc.ld_tgt_count) diff --git a/lustre/lov/lov_qos.c b/lustre/lov/lov_qos.c index 0397878..511584b 100644 --- a/lustre/lov/lov_qos.c +++ b/lustre/lov/lov_qos.c @@ -976,6 +976,8 @@ int qos_prep_create(struct obd_export *exp, struct lov_request_set *set) lsm = set->set_oi->oi_md; lsm->lsm_object_id = src_oa->o_id; + lsm->lsm_object_gr = src_oa->o_gr; + if (!lsm->lsm_stripe_size) lsm->lsm_stripe_size = lov->desc.ld_default_stripe_size; if (!lsm->lsm_pattern) { diff --git a/lustre/lov/lov_request.c b/lustre/lov/lov_request.c index 7f53441..135de12 100644 --- a/lustre/lov/lov_request.c +++ b/lustre/lov/lov_request.c @@ -621,6 +621,8 @@ static int create_done(struct obd_export *exp, struct lov_request_set *set, LBUG(); } ret_oa->o_id = src_oa->o_id; + ret_oa->o_gr = src_oa->o_gr; + ret_oa->o_valid |= OBD_MD_FLID | OBD_MD_FLGROUP; memcpy(src_oa, ret_oa, sizeof(*src_oa)); OBDO_FREE(ret_oa); @@ -704,6 +706,7 @@ int lov_update_create_set(struct lov_request_set *set, } loi->loi_id = req->rq_oi.oi_oa->o_id; + loi->loi_gr = req->rq_oi.oi_oa->o_gr; loi->loi_ost_idx = req->rq_idx; loi_init(loi); @@ -802,6 +805,7 @@ static int common_attr_done(struct lov_request_set *set) rc = -EIO; } tmp_oa->o_id = set->set_oi->oi_oa->o_id; + tmp_oa->o_gr = set->set_oi->oi_oa->o_gr; memcpy(set->set_oi->oi_oa, tmp_oa, sizeof(*set->set_oi->oi_oa)); out: if (tmp_oa) @@ -919,6 +923,7 @@ int lov_prep_brw_set(struct obd_export *exp, struct obd_info *oinfo, sizeof(*req->rq_oi.oi_oa)); } req->rq_oi.oi_oa->o_id = loi->loi_id; + req->rq_oi.oi_oa->o_gr = loi->loi_gr; req->rq_oi.oi_oa->o_stripe_idx = i; req->rq_buflen = sizeof(*req->rq_oi.oi_md); @@ -1037,6 +1042,7 @@ int lov_prep_getattr_set(struct obd_export *exp, struct obd_info *oinfo, memcpy(req->rq_oi.oi_oa, oinfo->oi_oa, sizeof(*req->rq_oi.oi_oa)); req->rq_oi.oi_oa->o_id = loi->loi_id; + req->rq_oi.oi_oa->o_gr = loi->loi_gr; req->rq_oi.oi_cb_up = cb_getattr_update; lov_set_add_req(req, set); @@ -1114,6 +1120,7 @@ int lov_prep_destroy_set(struct obd_export *exp, struct obd_info *oinfo, } memcpy(req->rq_oi.oi_oa, src_oa, sizeof(*req->rq_oi.oi_oa)); req->rq_oi.oi_oa->o_id = loi->loi_id; + req->rq_oi.oi_oa->o_gr = loi->loi_gr; lov_set_add_req(req, set); } if (!set->set_count) @@ -1225,6 +1232,7 @@ int lov_prep_setattr_set(struct obd_export *exp, struct obd_info *oinfo, memcpy(req->rq_oi.oi_oa, oinfo->oi_oa, sizeof(*req->rq_oi.oi_oa)); req->rq_oi.oi_oa->o_id = loi->loi_id; + req->rq_oi.oi_oa->o_gr = loi->loi_gr; req->rq_oi.oi_oa->o_stripe_idx = i; req->rq_oi.oi_cb_up = cb_setattr_update; @@ -1357,6 +1365,7 @@ int lov_prep_punch_set(struct obd_export *exp, struct obd_info *oinfo, memcpy(req->rq_oi.oi_oa, oinfo->oi_oa, sizeof(*req->rq_oi.oi_oa)); req->rq_oi.oi_oa->o_id = loi->loi_id; + req->rq_oi.oi_oa->o_gr = loi->loi_gr; req->rq_oi.oi_oa->o_stripe_idx = i; req->rq_oi.oi_cb_up = cb_update_punch; @@ -1452,6 +1461,7 @@ int lov_prep_sync_set(struct obd_export *exp, struct obd_info *oinfo, memcpy(req->rq_oi.oi_oa, oinfo->oi_oa, sizeof(*req->rq_oi.oi_oa)); req->rq_oi.oi_oa->o_id = loi->loi_id; + req->rq_oi.oi_oa->o_gr = loi->loi_gr; req->rq_oi.oi_oa->o_stripe_idx = i; req->rq_oi.oi_policy.l_extent.start = rs; -- 1.8.3.1