Re: [Libguestfs] [PATCH 2/3] sparsify: fix btrfs subvolume processing in is_read_only_lv

Richard W.M. Jones
2016-07-07T16:01:33Z

On Thu, Jul 07, 2016 at 06:04:15PM +0300, Maxim Perevedentsev
wrote:
> Calling guestfs_is_lv on btrfs subvolume throws an error.
> Here we workaround it by returning 'false' for subvolumes.
> ---
>  sparsify/utils.ml | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/sparsify/utils.ml b/sparsify/utils.ml
> index 9a49504..8d99db1 100644
> --- a/sparsify/utils.ml
> +++ b/sparsify/utils.ml
> @@ -34,7 +34,8 @@ let is_read_only_lv (g : G.guestfs) >        if
lv_attr.[1] = 'r' then Some lv_uuid else None
>    ) lvs in
>    fun fs ->
> -    if g#is_lv fs then (
> +    (* Btrfs subvolumes are NOT read-only LVs *)
> +    if not (is_btrfs_subvolume g fs) && g#is_lv fs then (
>        let uuid = g#lvuuid fs in
>        List.exists (fun u -> compare_lvm2_uuids uuid u = 0) ro_uuids

I really think it would be better for is_lv to take a Mountable.

Then in daemon/lvm.c we can just return false for any mountables which
are passed in where mountable->im_type != MOUNTABLE_DEVICE.

Rich.

--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.