[lvm-devel] [PATCH] Skip also special lvm devices in scan (if ignore suspended is used).

Milan Broz mbroz at redhat.com
Thu May 13 15:28:02 UTC 2010


On 05/13/2010 05:24 PM, Milan Broz wrote:
> This shoud avoid various races between dmeventd on multiple nodes
> in cluster where one node already repairing device and another
> run full scan and locks the device.
> 
> Signed-off-by: Milan Broz <mbroz at redhat.com>
> ---
>  lib/activate/dev_manager.c |    8 +++++++-
>  1 files changed, 7 insertions(+), 1 deletions(-)
> 
> diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c
> index d52d46f..ccafc1e 100644
> --- a/lib/activate/dev_manager.c
> +++ b/lib/activate/dev_manager.c
> @@ -130,7 +130,7 @@ int device_is_usable(dev_t dev)
>  {
>  	struct dm_task *dmt;
>  	struct dm_info info;
> -	const char *name;
> +	const char *name, *uuid;
>  	uint64_t start, length;
>  	char *target_type = NULL;
>  	char *params;
> @@ -157,6 +157,7 @@ int device_is_usable(dev_t dev)
>  		goto out;
>  
>  	name = dm_task_get_name(dmt);
> +	uuid = dm_task_get_uuid(dmt);
>  
>  	/* FIXME Also check for mirror block_on_error and mpath no paths */
>  	/* For now, we exclude all mirrors */
> @@ -171,6 +172,11 @@ int device_is_usable(dev_t dev)
>  
>  	/* FIXME Also check dependencies? */
>  
> +	/* Check internal lvm devices */
> +	if (!is_reserved_lvname(name) && uuid &&

of course
> +	if (is_reserved_lvname(name) && uuid &&

(I just replaced this with apply_lvname_restrictions...)

> +	    !strncmp(uuid, UUID_PREFIX, sizeof(UUID_PREFIX) - 1))
> +		goto out;
> +
>  	r = 1;
>  
>        out:

Milan




More information about the lvm-devel mailing list