[lvm-devel] [PATCH 2/5] libdm-deptree-return-failure-suspend-children

Zdenek Kabelac zkabelac at redhat.com
Fri Nov 20 22:57:17 UTC 2009


Dne 20.11.2009 22:29, Mike Snitzer napsal(a):
> Return error immediately to dm_tree_suspend_children() callers.
> 
> Otherwise suspend_lv and its variants can fail silently.
> 
> Signed-off-by: Mike Snitzer <snitzer at redhat.com>
> ---
>  libdm/libdm-deptree.c |    5 +++--
>  1 files changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/libdm/libdm-deptree.c b/libdm/libdm-deptree.c
> index bb10fe5..6f5355d 100644
> --- a/libdm/libdm-deptree.c
> +++ b/libdm/libdm-deptree.c
> @@ -1109,7 +1109,7 @@ int dm_tree_suspend_children(struct dm_tree_node *dnode,
>  			log_error("Unable to suspend %s (%" PRIu32
>  				  ":%" PRIu32 ")", name, info.major,
>  				  info.minor);
> -			continue;
> +			return 0;
>  		}


This is a bit hard to tell what's the right way here - either to continue
suspending  'the rest of the monster' or to stop with the first failure.

In case of the replicator - when suspend of one head would fail - I would
probably prefer to see the code to continue suspending remaing heads.


Zdenek

>  
>  		/* Update cached info */
> @@ -1130,7 +1130,8 @@ int dm_tree_suspend_children(struct dm_tree_node *dnode,
>  			continue;
>  
>  		if (dm_tree_node_num_children(child, 0))
> -			dm_tree_suspend_children(child, uuid_prefix, uuid_prefix_len);
> +			if (!dm_tree_suspend_children(child, uuid_prefix, uuid_prefix_len))
> +				return_0;
>  	}
>  
>  	return 1;




More information about the lvm-devel mailing list