Whamcloud - gitweb
LU-2802 lmv: get tgt by checking ltd_idx in lmv_find_target.
authorwangdi <di.wang@whamcloud.com>
Sat, 30 Nov 2013 12:22:55 +0000 (04:22 -0800)
committerOleg Drokin <oleg.drokin@intel.com>
Wed, 20 Mar 2013 01:32:29 +0000 (21:32 -0400)
Currently, lmv_find_target return lmv->tgts[mds]
according to mdt_index, which is not correct. LMV
index is created by mount sequence, while mdt_index
by indicated by --index. So we should check ltd_idx
in lmv_find_target.

Signed-off-by: Wang Di <di.wang@intel.com>
Change-Id: I67a941cca00eb80ba91af6eb3f3441982d4fcab3
Reviewed-on: http://review.whamcloud.com/5412
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
lustre/lmv/lmv_internal.h

index 32efb75..bef090c 100644 (file)
@@ -113,7 +113,17 @@ static inline int lmv_get_easize(struct lmv_obd *lmv)
 static inline struct lmv_tgt_desc *
 lmv_get_target(struct lmv_obd *lmv, mdsno_t mds)
 {
-       return lmv->tgts[mds];
+       int count = lmv->desc.ld_tgt_count;
+       int i;
+
+       for (i = 0; i < count; i++) {
+               if (lmv->tgts[i] == NULL)
+                       continue;
+
+               if (lmv->tgts[i]->ltd_idx == mds)
+                       return lmv->tgts[i];
+       }
+       return NULL;
 }
 
 static inline struct lmv_tgt_desc *