Whamcloud - gitweb
LU-6873 lod: duplicate mutex unlock 67/16067/2
authorwang di <di.wang@intel.com>
Sat, 22 Aug 2015 21:14:07 +0000 (14:14 -0700)
committerOleg Drokin <oleg.drokin@intel.com>
Fri, 28 Aug 2015 02:07:34 +0000 (02:07 +0000)
Remove duplicate mutex unlock in lod_add_device().

Signed-off-by: wang di <di.wang@intel.com>
Change-Id: Ibe73bf39a18ef96ecab10605d479e7b6ed97b397
Reviewed-on: http://review.whamcloud.com/16067
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Tested-by: Jenkins
Reviewed-by: Fan Yong <fan.yong@intel.com>
Reviewed-by: James Simmons <uja.ornl@yahoo.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
lustre/lod/lod_lov.c

index 0ae2f5d..4927303 100644 (file)
@@ -217,6 +217,7 @@ int lod_add_device(const struct lu_env *env, struct lod_device *lod,
        struct lod_tgt_descs    *ltd;
        struct obd_uuid         obd_uuid;
        bool                    for_ost;
+       bool lock = false;
        ENTRY;
 
        CDEBUG(D_CONFIG, "osp:%s idx:%d gen:%d\n", osp, index, gen);
@@ -333,6 +334,7 @@ int lod_add_device(const struct lu_env *env, struct lod_device *lod,
        }
 
        mutex_lock(&ltd->ltd_mutex);
+       lock = true;
        if (cfs_bitmap_check(ltd->ltd_tgt_bitmap, index)) {
                CERROR("%s: device %d is registered already\n", obd->obd_name,
                       index);
@@ -377,6 +379,7 @@ int lod_add_device(const struct lu_env *env, struct lod_device *lod,
        ltd->ltd_tgtnr++;
        mutex_unlock(&ltd->ltd_mutex);
        lod_putref(lod, ltd);
+       lock = false;
        if (lod->lod_recovery_completed)
                ldev->ld_ops->ldo_recovery_complete(env, ldev);
 
@@ -402,8 +405,10 @@ out_fini_llog:
 out_pool:
        lod_ost_pool_remove(&lod->lod_pool_info, index);
 out_mutex:
-       mutex_unlock(&ltd->ltd_mutex);
-       lod_putref(lod, ltd);
+       if (lock) {
+               mutex_unlock(&ltd->ltd_mutex);
+               lod_putref(lod, ltd);
+       }
 out_desc:
        OBD_FREE_PTR(tgt_desc);
 out_conn: