[Libguestfs] [PATCH v2] filesystems: don't try to get the size of btrfs subvolume
Richard W.M. Jones
rjones at redhat.com
Wed Jun 15 12:16:22 UTC 2016
On Wed, Jun 15, 2016 at 02:09:49PM +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 | 23 +++++++++++++++++++++--
> 1 file changed, 21 insertions(+), 2 deletions(-)
>
> diff --git a/cat/filesystems.c b/cat/filesystems.c
> index f1c2852..cfdac86 100644
> --- a/cat/filesystems.c
> +++ b/cat/filesystems.c
> @@ -476,9 +476,28 @@ 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: %s\n"),
> + guestfs_int_program_name, fses[i],
> + guestfs_last_error (g),
> + strerror (guestfs_last_errno (g)));
> 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]))
Looks OK to me, so ACK.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
libguestfs lets you edit virtual machines. Supports shell scripting,
bindings from many languages. http://libguestfs.org
More information about the Libguestfs
mailing list