Whamcloud - gitweb
Branch: b_new_cmd
authorwangdi <wangdi>
Wed, 25 Oct 2006 18:06:17 +0000 (18:06 +0000)
committerwangdi <wangdi>
Wed, 25 Oct 2006 18:06:17 +0000 (18:06 +0000)
serval group number fixes in ost, which may fix read-ahead bug in cmd37

lustre/llite/rw.c
lustre/lov/lov_internal.h
lustre/lov/lov_obd.c
lustre/obdfilter/filter_io.c
lustre/ost/ost_handler.c

index 0346c61..7fbcaba 100644 (file)
@@ -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 |
index 06a0828..3dfdd75 100644 (file)
@@ -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;
index 7ca3b77..9c278f8 100644 (file)
@@ -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,
index a6645d4..62f75a8 100644 (file)
@@ -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;
index 5ffe2d0..57ead88 100644 (file)
@@ -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;