From: Zdenek Kabelac Date: Fri, 18 Nov 2011 19:42:03 +0000 (+0000) Subject: Drop pool memory allocated in lv_has_target_type X-Git-Tag: v2_02_91~255 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=647c8edf82a1808fca8544e5b978f3157256f935;p=lvm2.git Drop pool memory allocated in lv_has_target_type Remove FIXMES - there should not be any pool free call since the memory pool is from device manager, and pool is detroyed after the operation, so doing extra free here would not help here. However lv_has_target_type() is using cmd mempool so here the extra call for dm_pool_free makes sence. --- diff --git a/WHATS_NEW b/WHATS_NEW index eed8ec5ee..10fca74c5 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.89 - ================================== + Drop pool memory allocated within lv_has_target_type(). Reduce stack allocation of some PATH_MAX sized char buffers. Unlock memory before writing metadata. Add query before removing snapshots when inactive snapshot origin is removed. diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c index 4f7e6acbe..a89d681ee 100644 --- a/lib/activate/dev_manager.c +++ b/lib/activate/dev_manager.c @@ -411,7 +411,7 @@ int lv_has_target_type(struct dm_pool *mem, struct logical_volume *lv, if (!(dmt = _setup_task(NULL, dlid, 0, DM_DEVICE_STATUS, 0, 0))) - return_0; + goto_bad; if (!dm_task_no_open_count(dmt)) log_error("Failed to disable open_count"); @@ -433,8 +433,11 @@ int lv_has_target_type(struct dm_pool *mem, struct logical_volume *lv, } } while (next); - out: +out: dm_task_destroy(dmt); +bad: + dm_pool_free(mem, dlid); + return r; } @@ -737,8 +740,6 @@ int dev_manager_snapshot_percent(struct dev_manager *dm, NULL, fail_if_percent_unsupported))) return_0; - /* FIXME dm_pool_free ? */ - /* If the snapshot isn't available, percent will be -1 */ return 1; } @@ -760,8 +761,6 @@ int dev_manager_mirror_percent(struct dev_manager *dm, if (!(name = dm_build_dm_name(dm->mem, lv->vg->name, lv->name, layer))) return_0; - /* FIXME dm_pool_free ? */ - if (!(dlid = build_dm_uuid(dm->mem, lv->lvid.s, layer))) { log_error("dlid build failed for %s", lv->name); return 0;