On Thu, 2015-10-01 at 11:45 +0100, Ian Campbell wrote:
> On Tue, 2015-09-29 at 10:44 +0100, Ian Campbell wrote:
> > prepareguest has already assigned this so we should use it instead of
> > replicating (perhaps wrongly since target_guest_lv_name and
> > target_choose_vg can behave differently if multiple vgs are present).
> 
> This is wrong in practice because
>     kpartx -a /dev/some-vg/some-device
> produces /dev/mapper/some--vg-some--device1 etc but not /dev/some-vg/some
> -device1.
> 
> The right fix probably involves lv_dev_mapper($gho-{Vg}, "$gho->{Lv}3")
> instead.
> 
> I'm in two minds about having guest_find_lv use lv_dev_mapper to populate
> $gho->{Lvdev} in the first place as an alternative fix though.

I decided I liked this route more. It's as yet untested other than "perl 
-c", but I have inserted the patch below before this one.

commit 9ba9a4f1d3fb7f01a1c76e9bff9f4b23187d855b
Author: Ian Campbell <ian.campb...@citrix.com>
Date:   Fri Oct 2 10:31:13 2015 +0100

    TestSupport: Use lv_dev_mapper in guest_find_lv
    
    This has the effect of switching $gho->{Lvdev} from /dev/$VG/$LV to
    /dev/mapper/$VG-$LV (where $VG and $LV have an s/-/--/ transformation
    applied).
    
    The two paths point to the samedevice and most call sites don't care
    about the distinction. Some places which use "kpartx $dev" to Lvdev
    expect to be able to append a partition number to $dev, while kpartx
    only creates the /dev/mapper form, meaning such places cannot use
    Lvdev. By making this switch we allow these places (such as
    ts-freebsd-install) to use kpartx.
    
    The only other place I'm aware of which requires one form or the other
    is the Debian initramfs code which expects root=/dev/mapper/vg-lv and
    does not accept /dev/vg/lv. However this is already handled correctly.
    
    Signed-off-by: Ian Campbell <ian.campb...@citrix.com>

diff --git a/Osstest/TestSupport.pm b/Osstest/TestSupport.pm
index c55b847..1365ee5 100644
--- a/Osstest/TestSupport.pm
+++ b/Osstest/TestSupport.pm
@@ -1382,7 +1382,7 @@ sub guest_find_lv ($) {
     $gho->{Vg}= $r{"${gn}_vg"};
     $gho->{Lv}= $r{"${gn}_disk_lv"};
     $gho->{Lvdev}= (defined $gho->{Vg} && defined $gho->{Lv})
-        ? '/dev/'.$gho->{Vg}.'/'.$gho->{Lv} : undef;
+        ? lv_dev_mapper($gho->{Vg},$gho->{Lv}) : undef;
 }
 
 sub guest_find_diskimg($)


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

Reply via email to