[Libguestfs] [PATCH] filesystems: don't try to get the size of btrfs subvolume

Richard W.M. Jones rjones at redhat.com
Thu Jun 9 11:18:19 UTC 2016


On Wed, Jun 08, 2016 at 02:57:07PM +0200, Cédric Bosdonnat wrote:
> virt-filesystem -l tries to get the size of btrfs subvolumes, which
> results in an error. Teach it to skip the subvolumes.
> ---
>  cat/filesystems.c | 22 ++++++++++++++++++++--
>  1 file changed, 20 insertions(+), 2 deletions(-)
> 
> diff --git a/cat/filesystems.c b/cat/filesystems.c
> index f1c2852..f679517 100644
> --- a/cat/filesystems.c
> +++ b/cat/filesystems.c
> @@ -476,9 +476,27 @@ do_output_filesystems (void)
>        }
>      }
>      if ((columns & COLUMN_SIZE)) {
> -      size = guestfs_blockdev_getsize64 (g, fses[i]);
> -      if (size == -1)
> +      CLEANUP_FREE char *device = guestfs_mountable_device (g, fses[i]);
> +      CLEANUP_FREE char *subvolume = NULL;
> +
> +      guestfs_push_error_handler (g, NULL, NULL);
> +
> +      subvolume = guestfs_mountable_subvolume (g, fses[i]);
> +      if (subvolume == NULL && guestfs_last_errno (g) != EINVAL) {
> +        fprintf (stderr,
> +                 _("%s: cannot determine the subvolume for %s: %s (%d)\n"),
> +                guestfs_int_program_name, fses[i],
> +                guestfs_last_error (g), guestfs_last_errno (g));

Don't print the raw errno here.  You can write:

        fprintf (stderr,
                 _("%s: cannot determine the subvolume for %s: %s: %s\n"),
                guestfs_int_program_name, fses[i],
                guestfs_last_error (g),
                strerror (guestfs_last_errno (g)));

Rich.

>          exit (EXIT_FAILURE);
> +      }
> +
> +      guestfs_pop_error_handler (g);
> +
> +      if (!device || !subvolume) {
> +        size = guestfs_blockdev_getsize64 (g, fses[i]);
> +        if (size == -1)
> +          exit (EXIT_FAILURE);
> +      }
>      }
>  
>      if (is_md (fses[i]))
> -- 
> 2.6.6
> 
> _______________________________________________
> Libguestfs mailing list
> Libguestfs at redhat.com
> https://www.redhat.com/mailman/listinfo/libguestfs

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html




More information about the Libguestfs mailing list