list-filesystems: Use core list-filesystems API (RHBZ#642933).
authorRichard W.M. Jones <rjones@redhat.com>
Thu, 28 Oct 2010 12:41:12 +0000 (13:41 +0100)
committerRichard W.M. Jones <rjones@redhat.com>
Thu, 28 Oct 2010 14:48:16 +0000 (15:48 +0100)
Change virt-list-filesystems to use the core inspection API
instead of the deprecated Sys::Guestfs::Lib::get_partitions
function.

tools/virt-list-filesystems

index 5f545cf..945a861 100755 (executable)
@@ -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";
     }
 }