On Tue, Apr 26, 2011 at 05:03:46PM +0100, Matthew Booth wrote:
@@ -934,21 +939,23 @@ sub _get_application_owner
sub _unconfigure_hv { - my ($g, $desc) = @_; + my ($g, $root, $desc) = @_;
- _unconfigure_xen($g, $desc); - _unconfigure_vmware($g, $desc); + my @apps = $g->inspect_list_applications($root);
I can't tell without looking at the full context, but this might not be safe. inspect_list_applications will only work if the mountpoints are all mounted up. That's because this one call can read files out of the filesystem, where as all the inspect_get_* calls just return data that was cached in the handle (by inspect_os). Note the comment in the removed code below which says just about the same thing:
- my $root_dev = $roots[0]; - - # Mount up the disks. - my %fses = $g->inspect_get_mountpoints ($root_dev); - my @fses = sort { length $a <=> length $b } keys %fses; - foreach (@fses) { - eval { $g->mount_options ("", $fses{$_}, $_) }; - print __x("{e} (ignored)\n", e => $@) if $@; - } - - # Construct the "$desc" hashref which contains the main features - # found by inspection. - my %desc; - - $desc{root_device} = $root_dev; - - $desc{os} = $g->inspect_get_type ($root_dev); - $desc{distro} = $g->inspect_get_distro ($root_dev); - $desc{product_name} = $g->inspect_get_product_name ($root_dev); - $desc{product_variant} = $g->inspect_get_product_variant ($root_dev); - $desc{major_version} = $g->inspect_get_major_version ($root_dev); - $desc{minor_version} = $g->inspect_get_minor_version ($root_dev); - $desc{arch} = $g->inspect_get_arch ($root_dev); - - # Notes: - # (1) Filesystems have to be mounted for this to work. Do not - # move this code over the filesystem mounting code above. - # (2) For RPM-based distros, new libguestfs inspection code - # is only able to populate the 'app_name' field (old Perl code - # populated a lot more). Fortunately this is the only field - # that the code currently uses. - my @apps = $g->inspect_list_applications ($root_dev); - $desc{apps} = \@apps; - - return \%desc; + return $roots[0]; }
References: http://libguestfs.org/guestfs.3.html#inspection http://libguestfs.org/guestfs.3.html#guestfs_inspect_list_applications The rest seems all fine. I'd be a lot happier if our language/ compiler was strongly type-checking all of these changes though ... Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones New in Fedora 11: Fedora Windows cross-compiler. Compile Windows programs, test, and build Windows installers. Over 70 libraries supprt'd http://fedoraproject.org/wiki/MinGW http://www.annexia.org/fedora_mingw