[Libguestfs] [PATCH 2/2] list-filesystems: Use core list-filesystems API.

Richard W.M. Jones rjones at redhat.com
Thu Oct 28 12:48:30 UTC 2010


-- 
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 2001
From: 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



More information about the Libguestfs mailing list