[lvm-devel] LVM2 ./WHATS_NEW lib/activate/activate.h lib/a ...

Alasdair G Kergon agk at redhat.com
Thu May 13 23:47:11 UTC 2010


On Thu, May 13, 2010 at 06:38:41PM -0000, mbroz at sourceware.org wrote:
> +	/* 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;
> +	}

Mixing up types there.
name is a dm device name

is_reserved_lvname() accepts an lvname.

They are not the same thing.

E.g. A simple test gives me this bogus error:
  /dev/mapper/pvmove-lvol0: Reserved internal LVM device not usable.

Either perform a type conversion (e.g. using dm_split_lvm_name) or add a
specialist validation function (e.g. move the layer suffix checks out to
a separate shared fn and only pass the LV name part for checking; it
wouldn't be necessary to un-escape the hyphens, but you would have to
parse them properly to find the start of the LV name).

Another matter we need to consider is this:
     # If, while scanning the system for PVs, LVM2 encounters a device-mapper
     # device that has its I/O suspended, it waits for it to become accessible.
     # Set this to 1 to skip such devices.  This should only be needed
     # in recovery situations.
     ignore_suspended_devices = 0

i.e. The default is *disabled*.  (Well, dmeventd may always enable it of
course.)

But should the new check in this patch be independent of that setting and
be *always* enabled?

Alasdair




More information about the lvm-devel mailing list