Whamcloud - gitweb
LU-5122 lfsck: maintain the MDT devices list properly 07/10507/3
authorFan Yong <fan.yong@intel.com>
Mon, 28 Apr 2014 15:42:13 +0000 (23:42 +0800)
committerOleg Drokin <oleg.drokin@intel.com>
Wed, 11 Jun 2014 02:49:51 +0000 (02:49 +0000)
The layout LFSCK needs to know which MDT/OST devices have taken part
in the LFSCK, it maintains two lists for that. When the layout LFSCK
starts/stops, it should handle the two lists separately and properly.

Signed-off-by: Fan Yong <fan.yong@intel.com>
Change-Id: I26103ddc7796dbb1706f5c4da3737df297214e68
Reviewed-on: http://review.whamcloud.com/10507
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Lai Siyao <lai.siyao@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/lfsck/lfsck_layout.c

index 98e61d2..5d619b6 100644 (file)
@@ -1460,6 +1460,7 @@ static int lfsck_layout_master_notify_others(const struct lu_env *env,
                        break;
 
                /* link other MDT targets locallly. */
+               ltds = &lfsck->li_mdt_descs;
                spin_lock(&ltds->ltd_lock);
                cfs_foreach_bit(ltds->ltd_tgts_bitmap, idx) {
                        ltd = LTD_TGT(ltds, idx);
@@ -5288,6 +5289,10 @@ static void lfsck_layout_master_data_release(const struct lu_env *env,
                                 ltd_layout_list) {
                list_del_init(&ltd->ltd_layout_list);
        }
+       spin_unlock(&ltds->ltd_lock);
+
+       ltds = &lfsck->li_mdt_descs;
+       spin_lock(&ltds->ltd_lock);
        list_for_each_entry_safe(ltd, next, &llmd->llmd_mdt_phase1_list,
                                 ltd_layout_phase_list) {
                list_del_init(&ltd->ltd_layout_phase_list);