X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Flod%2Flod_lov.c;h=a116ae2200cfc266bd9b6555458c20077e4a60a0;hp=4927303169a5ace6c8aff086c321f6e2640b3943;hb=dd745f94bf0fac0d4042f46c8faba1b61d3b9fb3;hpb=6948fa26bcefaec19071393216c4d0a7aac6392e diff --git a/lustre/lod/lod_lov.c b/lustre/lod/lod_lov.c index 4927303..a116ae2 100644 --- a/lustre/lod/lod_lov.c +++ b/lustre/lod/lod_lov.c @@ -388,7 +388,7 @@ int lod_add_device(const struct lu_env *env, struct lod_device *lod, if (rc != 0) { CERROR("%s: cannot start llog on %s:rc = %d\n", lod2obd(lod)->obd_name, osp, rc); - GOTO(out_pool, rc); + GOTO(out_ltd, rc); } } @@ -402,6 +402,19 @@ int lod_add_device(const struct lu_env *env, struct lod_device *lod, out_fini_llog: lod_sub_fini_llog(env, tgt_desc->ltd_tgt, tgt_desc->ltd_recovery_thread); +out_ltd: + lod_getref(ltd); + mutex_lock(<d->ltd_mutex); + lock = true; + if (!for_ost && LTD_TGT(ltd, index)->ltd_recovery_thread != NULL) { + struct ptlrpc_thread *thread; + + thread = LTD_TGT(ltd, index)->ltd_recovery_thread; + OBD_FREE_PTR(thread); + } + ltd->ltd_tgtnr--; + cfs_bitmap_clear(ltd->ltd_tgt_bitmap, index); + LTD_TGT(ltd, index) = NULL; out_pool: lod_ost_pool_remove(&lod->lod_pool_info, index); out_mutex: