summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2011-08-11 11:45:25 +0100
committerRichard W.M. Jones <rjones@redhat.com>2011-08-17 13:05:23 +0100
commit1ba3852b750cd448de35e110c607c0e4d5f1ae36 (patch)
tree5cef67070bfab1c047cac8828d96426d202413d8
parentf5036236ffd4420c6d7e42a5738b2be7d1f6cc3c (diff)
downloadlibguestfs-1ba3852b750cd448de35e110c607c0e4d5f1ae36.tar.gz
libguestfs-1ba3852b750cd448de35e110c607c0e4d5f1ae36.tar.xz
libguestfs-1ba3852b750cd448de35e110c607c0e4d5f1ae36.zip
Fix 'unknown filesystem' warnings in old inspection code (RHBZ#678231 RHBZ#666578).
This is a comprehensive fix for the warnings from the old (and obsolete) Perl inspection code. For a full description and reproducer, see: https://bugzilla.redhat.com/show_bug.cgi?id=678231#c5 (cherry picked from commit b9838001015a06a69a08b69d9f013d82f0ea3139)
-rw-r--r--perl/lib/Sys/Guestfs/Lib.pm34
1 files changed, 20 insertions, 14 deletions
diff --git a/perl/lib/Sys/Guestfs/Lib.pm b/perl/lib/Sys/Guestfs/Lib.pm
index fc6a10f6..007db64c 100644
--- a/perl/lib/Sys/Guestfs/Lib.pm
+++ b/perl/lib/Sys/Guestfs/Lib.pm
@@ -892,23 +892,29 @@ sub _find_filesystem
if (/^LABEL=(.*)/) {
my $label = $1;
- foreach (sort keys %$fses) {
- if (exists $fses->{$_}->{label} &&
- $fses->{$_}->{label} eq $label) {
- return ($_, $fses->{$_});
- }
- }
- warn __x("unknown filesystem label {label}\n", label => $label);
+ my $dev;
+ eval {
+ $dev = $g->findfs_label ($label);
+ };
+ warn "unknown filesystem LABEL=$label in /etc/fstab: $@\n" if $@;
+ return () if !defined $dev;
+ $dev = _canonical_dev ($dev);
+ return ($dev, $fses->{$dev}) if exists $fses->{$dev};
+ # Otherwise return nothing. It's just a filesystem that we are
+ # ignoring, eg. swap.
return ();
} elsif (/^UUID=(.*)/) {
my $uuid = $1;
- foreach (sort keys %$fses) {
- if (exists $fses->{$_}->{uuid} &&
- $fses->{$_}->{uuid} eq $uuid) {
- return ($_, $fses->{$_});
- }
- }
- warn __x("unknown filesystem UUID {uuid}\n", uuid => $uuid);
+ my $dev;
+ eval {
+ $dev = $g->findfs_uuid ($uuid);
+ };
+ warn "unknown filesystem UUID=$uuid in /etc/fstab: $@\n" if $@;
+ return () if !defined $dev;
+ $dev = _canonical_dev ($dev);
+ return ($dev, $fses->{$dev}) if exists $fses->{$dev};
+ # Otherwise return nothing. It's just a filesystem that we are
+ # ignoring, eg. swap.
return ();
} else {
return ($_, $fses->{$_}) if exists $fses->{$_};