On Thu, Apr 24, 2014 at 04:43:59PM -0600, Mike Latimer wrote:
In some cases (specifically, SUSE grub2 environments) it is possible to fail to update the block entries in device.map. In turn, this causes an invalid path to be returned in perl-Bootloader code, which causes the conversion to fail with the following message:
is_file_opts: is_file: is_file_stub: path must start with a / character
This patch prevents the problem by adding device.map (for /boot/grub and /boot/grub2) to the list of configurations to remap, then adds a check to ensure invalid paths are not passed to is_file_opts.
Note - This is for the existing (perl version) of virt-v2v.
Sorry for the late reply, but I've been buried in the v2v rewrite for the past few days. I will take this patch into account when I get back to the Linux conversion part. Thanks, Rich.
--- lib/Sys/VirtConvert/Converter/Linux.pm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/lib/Sys/VirtConvert/Converter/Linux.pm b/lib/Sys/VirtConvert/Converter/Linux.pm index e8463bc..b673120 100644 --- a/lib/Sys/VirtConvert/Converter/Linux.pm +++ b/lib/Sys/VirtConvert/Converter/Linux.pm @@ -56,7 +56,10 @@ sub get_initrd if (defined($initrd)) { # If the initrd starts with (hdX,X), remove it. $initrd =~ s/^\(hd.*\)//; - return $initrd if ($g->is_file_opts($initrd, followsymlinks=>1)); + # Catch invalid paths by ensuring first character is '/' + if ($initrd =~ /^\//) { + return $initrd if $g->is_file_opts($initrd, followsymlinks=>1); + } } }
@@ -2672,13 +2675,13 @@ sub _remap_block_devices
# Add standard configuration files to the checklist push (@checklist, '/files/etc/fstab/*/spec'); + push (@checklist, '/files/boot/*/device.map/*'. + '[label() != "#comment"]');
# Add grub or grub2 files to the checklist if (defined($grub->{grub_conf})) { push (@checklist, "/files$grub->{grub_conf}/*/kernel/root"); push (@checklist, "/files$grub->{grub_conf}/*/kernel/resume"); - push (@checklist, '/files/boot/grub/device.map/*'. - '[label() != "#comment"]'); } elsif (defined($grub->{cfg})) { push (@checklist, '/files/etc/sysconfig/grub/GRUB_CMDLINE_LINUX'); -- 1.8.4.5
_______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://www.redhat.com/mailman/listinfo/libguestfs
-- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-p2v converts physical machines to virtual machines. Boot with a live CD or over the network (PXE) and turn machines into KVM guests. http://libguestfs.org/virt-v2v