#!/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
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';
$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";
}
}