From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1385 invoked by alias); 14 May 2010 12:03:33 -0000 Received: (qmail 1316 invoked by uid 9664); 14 May 2010 12:03:33 -0000 Date: Fri, 14 May 2010 12:03:00 -0000 Message-ID: <20100514120333.1313.qmail@sourceware.org> From: mbroz@sourceware.org To: lvm-devel@redhat.com, lvm2-cvs@sourceware.org Subject: LVM2/lib/activate dev_manager.c Mailing-List: contact lvm2-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: lvm2-cvs-owner@sourceware.org X-SW-Source: 2010-05/txt/msg00034.txt.bz2 CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: mbroz@sourceware.org 2010-05-14 12:03:32 Modified files: lib/activate : dev_manager.c Log message: Fix device_is_usable to properly detect only internal LV names. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/activate/dev_manager.c.diff?cvsroot=lvm2&r1=1.188&r2=1.189 --- LVM2/lib/activate/dev_manager.c 2010/05/13 18:38:38 1.188 +++ LVM2/lib/activate/dev_manager.c 2010/05/14 12:03:32 1.189 @@ -133,7 +133,7 @@ const char *name, *uuid; uint64_t start, length; char *target_type = NULL; - char *params; + char *params, *vgname = NULL, *lvname, *layer; void *next = NULL; int r = 0; @@ -175,15 +175,23 @@ /* FIXME Also check dependencies? */ /* Check internal lvm devices */ - if (is_reserved_lvname(name) && uuid && - !strncmp(uuid, UUID_PREFIX, sizeof(UUID_PREFIX) - 1)) { - log_debug("%s: Reserved internal LVM device not usable.", dev_name(dev)); - goto out; + if (uuid && !strncmp(uuid, UUID_PREFIX, sizeof(UUID_PREFIX) - 1)) { + if (!(vgname = dm_strdup(name)) || + !dm_split_lvm_name(NULL, NULL, &vgname, &lvname, &layer)) + goto_out; + + if (lvname && (is_reserved_lvname(lvname) || layer)) { + log_debug("%s: Reserved internal LV device %s/%s%s%s not usable.", + dev_name(dev), vgname, lvname, layer ? "-" : "", + layer ?: ""); + goto out; + } } r = 1; out: + dm_free(vgname); dm_task_destroy(dmt); return r; }