From: Scott Moser [mailto:[email protected]] On Behalf Of Scott Moser
Sent: den 11 juni 2012 23:16
>...Without digging around on older versions of OS's and their included
>kernel/udev/kpartx.... i'd have to say that from your message above, and my
>testing that running 'kpartx' is no longer necessary. That can reasonably be
>expected to be created by >the kernel or some other plumbing bits
>automatically...
I just now tested to remove the kpartx invocation from
/nova/virt/disk/mount.py, like this:
diff --git a/nova/virt/disk/mount.py b/nova/virt/disk/mount.py
index 11959b2..4d9527b 100644
--- a/nova/virt/disk/mount.py
+++ b/nova/virt/disk/mount.py
@@ -61,25 +61,9 @@ class Mount(object):
if self.partition == -1:
self.error = _('partition search unsupported with %s') % self.mode
elif self.partition:
- map_path = '/dev/mapper/%sp%s' % (os.path.basename(self.device),
- self.partition)
- assert(not os.path.exists(map_path))
-
- # Note kpartx can output warnings to stderr and succeed
- # Also it can output failures to stderr and "succeed"
- # So we just go on the existence of the mapped device
- _out, err = utils.trycmd('kpartx', '-a', self.device,
- run_as_root=True, discard_warnings=True)
-
- # Note kpartx does nothing when presented with a raw image,
- # so given we only use it when we expect a partitioned image, fail
- if not os.path.exists(map_path):
- if not err:
- err = _('partition %s not found') % self.partition
- self.error = _('Failed to map partitions: %s') % err
- else:
- self.mapped_device = map_path
- self.mapped = True
+ #qemu-nbd already has mapped the partition for mounting
+ self.mapped_device = '%sp%s' % (self.device, self.partition)
+ self.mapped = True
else:
self.mapped_device = self.device
self.mapped = True
@@ -90,8 +74,7 @@ class Mount(object):
"""Remove partitions of the device from the file system namespace."""
if not self.mapped:
return
- if self.partition:
- utils.execute('kpartx', '-d', self.device, run_as_root=True)
+ #No need to run kpartx
self.mapped = False
to rely on the qemu-nbd mapping. With the above change, file injection works
fine with the CirrOS qcow2 image (I have not tested with any other image yet).
I run Ubuntu 12.04 Desktop with the 3.2.0-24-generic kernel and qemu-utils
package version 1.0+noroms-0ubuntu13
Best Regards,
Fredric
_______________________________________________
Mailing list: https://launchpad.net/~openstack
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openstack
More help : https://help.launchpad.net/ListHelp