Richard W.M. Jones
2010-Oct-28 12:47 UTC
[Libguestfs] [PATCH 0/2] Use guestfs_list_filesystems in all possible places.
This is a fix for: https://bugzilla.redhat.com/show_bug.cgi?id=642933 We had a lot of code before which used ad-hoc ways to list out all mountable filesystems in a guest. We now have a core inspection API (guestfs_list_filesystems) which does the same thing. These patches remove the last remaining use of the old way, in favour of using the core API. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones virt-df lists disk usage of guests without needing to install any software inside the virtual machine. Supports Linux and Windows. http://et.redhat.com/~rjones/virt-df/
Richard W.M. Jones
2010-Oct-28 12:48 UTC
[Libguestfs] [PATCH 1/2] Sys::Guestfs::Lib: deprecate get_partitions
-- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones virt-top is 'top' for virtual machines. Tiny program with many powerful monitoring features, net stats, disk stats, logging, etc. http://et.redhat.com/~rjones/virt-top -------------- next part -------------->From b0e4f3ff79cf9619a3f6f9b04f4114777eccd8c8 Mon Sep 17 00:00:00 2001From: Richard W.M. Jones <rjones at redhat.com> Date: Thu, 28 Oct 2010 13:40:23 +0100 Subject: [PATCH 1/2] Sys::Guestfs::Lib: deprecate get_partitions (RHBZ#642933). However the code is left since this function is used by virt-v2v amongst others. --- perl/lib/Sys/Guestfs/Lib.pm | 13 +++---------- 1 files changed, 3 insertions(+), 10 deletions(-) diff --git a/perl/lib/Sys/Guestfs/Lib.pm b/perl/lib/Sys/Guestfs/Lib.pm index 5df6229..317c9b7 100644 --- a/perl/lib/Sys/Guestfs/Lib.pm +++ b/perl/lib/Sys/Guestfs/Lib.pm @@ -285,16 +285,9 @@ sub feature_available { =head2 get_partitions - @partitions = get_partitions ($g); - -This function takes an open libguestfs handle C<$g> and returns all -partitions and logical volumes found on it. - -What is returned is everything that could contain a filesystem (or -swap). Physical volumes are not normally included from the list -except if they contain a filesystem directly. Nor are devices which -are partitioned (eg. C</dev/sda> would not be returned if C</dev/sda1> -exists). +This function is deprecated. It will not be updated in future +versions of libguestfs. New code should not use this function. Use +the core API function L<Sys::Guestfs(3)/list_filesystems> instead. =cut -- 1.7.3.1
Richard W.M. Jones
2010-Oct-28 12:48 UTC
[Libguestfs] [PATCH 2/2] list-filesystems: Use core list-filesystems API.
-- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones virt-df lists disk usage of guests without needing to install any software inside the virtual machine. Supports Linux and Windows. http://et.redhat.com/~rjones/virt-df/ -------------- next part -------------->From e17e17a9e9864095f3c86b176f4bad1f319dcd0f Mon Sep 17 00:00:00 2001From: Richard W.M. Jones <rjones at redhat.com> Date: Thu, 28 Oct 2010 13:41:12 +0100 Subject: [PATCH 2/2] list-filesystems: Use core list-filesystems API. Change virt-list-filesystems to use the core inspection API instead of the deprecated Sys::Guestfs::Lib::get_partitions function. --- tools/virt-list-filesystems | 54 +++++++++--------------------------------- 1 files changed, 12 insertions(+), 42 deletions(-) diff --git a/tools/virt-list-filesystems b/tools/virt-list-filesystems index 5f545cf..945a861 100755 --- a/tools/virt-list-filesystems +++ b/tools/virt-list-filesystems @@ -1,6 +1,6 @@ #!/usr/bin/perl -w # virt-list-filesystems -# Copyright (C) 2009 Red Hat Inc. +# Copyright (C) 2009-2010 Red Hat Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -20,7 +20,7 @@ use warnings; use strict; use Sys::Guestfs; -use Sys::Guestfs::Lib qw(open_guest get_partitions); +use Sys::Guestfs::Lib qw(open_guest); use Pod::Usage; use Getopt::Long; use Locale::TextDomain 'libguestfs'; @@ -148,49 +148,19 @@ if ($uri) { $g->launch (); -# List of partitions, LVs etc. -my @partitions = get_partitions ($g); - -my @fses; -my @not_mountable; -my $dev; - -# Try and mount each one, to see what's mountable. -foreach $dev (@partitions) { - eval { $g->mount_ro ($dev, "/"); }; - my $mountable = $@ ? 0 : 1; - $g->umount_all (); - if ($mountable) { - push @fses, $dev; - } else { - push @not_mountable, $dev; - } -} +# List of filesystems. +my %fses = $g->list_filesystems (); -foreach $dev (@fses) { - print canonicalize($dev); - if ($long) { - my $fstype; - eval { $fstype = $g->vfs_type ($dev); }; - if ($fstype) { - print " $fstype"; - } else { - print " unknown"; - } - } - print "\n"; -} +my ($dev, $fstype); +foreach $dev (sort keys %fses) { + $fstype = $fses{$dev}; -# If asked, look in the not_mountable list for potential swap devices. -if ($all) { - foreach $dev (@not_mountable) { - my $file; - eval { $file = $g->file ($dev); }; - if ($file && $file =~ /\bswap\b/) { - print canonicalize($dev); - print " swap" if $long; - print "\n" + if ($all || ($fstype ne "swap" && $fstype ne "unknown")) { + print canonicalize($dev); + if ($long) { + print " $fstype"; } + print "\n"; } } -- 1.7.3.1
Apparently Analagous Threads
- Re: [RFC] Inconsistent output of guestfs_list_filesystems
- [RFC] Inconsistent output of guestfs_list_filesystems
- [PATCH] lib: docs: State that guestfs_list_filesystems is no longer requires to be used soon after launch when nothing is mounted
- Displaying mountables in the error output of guestfish etc
- Re: [RFC] Inconsistent output of guestfs_list_filesystems