diff options
author | Richard Jones <rjones@redhat.com> | 2010-04-10 13:21:33 +0100 |
---|---|---|
committer | Richard Jones <rjones@redhat.com> | 2010-04-10 13:43:35 +0100 |
commit | e6bdd66fa6bdfa4e762f3c67ec1bac83a1d6643b (patch) | |
tree | c0a294ede0acab05b0ef99bc43652036b0804c83 | |
parent | add5e22563972210f5c8baf9e8cf651fc1a7bbd8 (diff) | |
download | libguestfs-e6bdd66fa6bdfa4e762f3c67ec1bac83a1d6643b.tar.gz libguestfs-e6bdd66fa6bdfa4e762f3c67ec1bac83a1d6643b.tar.xz libguestfs-e6bdd66fa6bdfa4e762f3c67ec1bac83a1d6643b.zip |
virt-list-partitions: Add -t / --total option.
This option lists out block devices separately:
$ virt-list-partitions -lht /tmp/WindowsResized.img
/dev/sda1 ntfs 100.0M
/dev/sda2 ntfs 11.9G
/dev/sda device 12.0G
-rwxr-xr-x | tools/virt-list-partitions | 76 |
1 files changed, 56 insertions, 20 deletions
diff --git a/tools/virt-list-partitions b/tools/virt-list-partitions index b8bc0cc1..0fec8723 100755 --- a/tools/virt-list-partitions +++ b/tools/virt-list-partitions @@ -82,6 +82,14 @@ at all. =cut +my $human; + +=item B<-h> | B<--human-readable> + +Show sizes in human-readable form (eg. "1G"). + +=cut + my $long; =item B<-l> | B<--long> @@ -91,11 +99,12 @@ and size of each partition too (where "type" means C<ext3>, C<pv> etc.) =cut -my $human; +my $total; -=item B<-h> | B<--human-readable> +=item B<-t> | B<--total> -Show sizes in human-readable form (eg. "1G"). +Display the total size of each block device (as a separate row or +rows). =back @@ -107,8 +116,9 @@ Getopt::Long::Configure ("bundling"); GetOptions ("help|?" => \$help, "version" => \$version, "connect|c=s" => \$uri, - "long|l" => \$long, "human-readable|h" => \$human, + "long|l" => \$long, + "total|t" => \$total, ) or pod2usage (2); pod2usage (1) if $help; if ($version) { @@ -131,44 +141,70 @@ if ($uri) { $g->launch (); # List of partitions and sizes. -my @partitions; -my @devices = $g->list_devices (); -foreach my $dev (@devices) { - my @p = $g->part_list ($dev); - foreach (@p) { - $_->{name} = canonicalize ("$dev" . $_->{part_num}); - push @partitions, $_; - } -} +my @partitions = $g->list_partitions (); +foreach my $name (@partitions) { + $name = canonicalize ($name); -# Print them. -foreach my $part (@partitions) { - print $part->{name}; + print $name; if ($long) { my $type; eval { - $type = $g->vfs_type ($part->{name}); + $type = $g->vfs_type ($name); }; $type ||= "unknown"; $type = "pv" if $type eq "LVM2_member"; print " $type "; + + my $size; + eval { + $size = $g->blockdev_getsize64 ($name); + }; + $size ||= "unknown"; + if ($human) { - print (human_size($part->{part_size})); + print (human_size($size)); } else { - print $part->{part_size}; + print $size; } } print "\n"; } +if ($total) { + # List of devices and sizes. + my @devices = $g->list_devices (); + foreach my $name (@devices) { + $name = canonicalize ($name); + + print $name; + + if ($long) { + print " device "; + + my $size; + eval { + $size = $g->blockdev_getsize64 ($name); + }; + $size ||= "unknown"; + + if ($human) { + print (human_size($size)); + } else { + print $size; + } + } + print "\n"; + } +} + # The reverse of device name translation, see # BLOCK DEVICE NAMING in guestfs(3). sub canonicalize { local $_ = shift; - if (m{^/dev/[hv]d([a-z]\d)$}) { + if (m{^/dev/[hv]d([a-z]+\d*)$}) { return "/dev/sd$1"; } $_; |