Whamcloud - gitweb
b=17760 Separate locking for obd bitfield and recovery
[fs/lustre-release.git] / lustre / ptlrpc / target.c
index 8b9f581..d402923 100644 (file)
@@ -26,7 +26,7 @@
  * GPL HEADER END
  */
 /*
- * Copyright  2008 Sun Microsystems, Inc. All rights reserved
+ * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 /*
@@ -122,9 +122,9 @@ static void obt_boot_epoch_update(struct lu_target *lut)
         cfs_spin_unlock(&lut->lut_translock);
 
         CFS_INIT_LIST_HEAD(&client_list);
-        cfs_spin_lock_bh(&obd->obd_processing_task_lock);
+        cfs_spin_lock(&obd->obd_recovery_task_lock);
         cfs_list_splice_init(&obd->obd_final_req_queue, &client_list);
-        cfs_spin_unlock_bh(&obd->obd_processing_task_lock);
+        cfs_spin_unlock(&obd->obd_recovery_task_lock);
 
         /**
          * go through list of exports participated in recovery and
@@ -135,9 +135,9 @@ static void obt_boot_epoch_update(struct lu_target *lut)
                 obt_client_epoch_update(req->rq_export);
         }
         /** return list back at once */
-        cfs_spin_lock_bh(&obd->obd_processing_task_lock);
+        cfs_spin_lock(&obd->obd_recovery_task_lock);
         cfs_list_splice_init(&client_list, &obd->obd_final_req_queue);
-        cfs_spin_unlock_bh(&obd->obd_processing_task_lock);
+        cfs_spin_unlock(&obd->obd_recovery_task_lock);
         obt_server_data_update(lut, 1);
 }
 
@@ -199,13 +199,13 @@ void lut_client_free(struct obd_export *exp)
         if (ted->ted_lr_idx < 0)
                 return;
         /* Clear bit when lcd is freed */
-        spin_lock(&lut->lut_client_bitmap_lock);
-        if (!test_and_clear_bit(ted->ted_lr_idx, lut->lut_client_bitmap)) {
+        cfs_spin_lock(&lut->lut_client_bitmap_lock);
+        if (!cfs_test_and_clear_bit(ted->ted_lr_idx, lut->lut_client_bitmap)) {
                 CERROR("%s: client %u bit already clear in bitmap\n",
                        exp->exp_obd->obd_name, ted->ted_lr_idx);
                 LBUG();
         }
-        spin_unlock(&lut->lut_client_bitmap_lock);
+        cfs_spin_unlock(&lut->lut_client_bitmap_lock);
 }
 EXPORT_SYMBOL(lut_client_free);
 
@@ -248,7 +248,7 @@ static int lut_server_data_update(const struct lu_env *env,
 
         CDEBUG(D_SUPER,
                "%s: mount_count is "LPU64", last_transno is "LPU64"\n",
-               lut->lut_lsd.lsd_uuid, lut->lut_mount_count,
+               lut->lut_lsd.lsd_uuid, lut->lut_obd->u.obt.obt_mount_count,
                lut->lut_last_transno);
 
         cfs_spin_lock(&lut->lut_translock);
@@ -308,9 +308,9 @@ void lut_boot_epoch_update(struct lu_target *lut)
          * The recovery is not yet finished and final queue can still be updated
          * with resend requests. Move final list to separate one for processing
          */
-        cfs_spin_lock_bh(&lut->lut_obd->obd_processing_task_lock);
+        cfs_spin_lock(&lut->lut_obd->obd_recovery_task_lock);
         cfs_list_splice_init(&lut->lut_obd->obd_final_req_queue, &client_list);
-        cfs_spin_unlock_bh(&lut->lut_obd->obd_processing_task_lock);
+        cfs_spin_unlock(&lut->lut_obd->obd_recovery_task_lock);
 
         /**
          * go through list of exports participated in recovery and
@@ -322,9 +322,9 @@ void lut_boot_epoch_update(struct lu_target *lut)
                         lut_client_epoch_update(&env, req->rq_export);
         }
         /** return list back at once */
-        cfs_spin_lock_bh(&lut->lut_obd->obd_processing_task_lock);
+        cfs_spin_lock(&lut->lut_obd->obd_recovery_task_lock);
         cfs_list_splice_init(&client_list, &lut->lut_obd->obd_final_req_queue);
-        cfs_spin_unlock_bh(&lut->lut_obd->obd_processing_task_lock);
+        cfs_spin_unlock(&lut->lut_obd->obd_recovery_task_lock);
         /** update server epoch */
         lut_server_data_update(&env, lut, 1);
         lu_env_fini(&env);