← Back to team overview

vmbuilder team mailing list archive

[Merge] lp:~louis-bouchard/vmbuilder/vmbuilder_531599_devmap into lp:vmbuilder

 

Louis Bouchard has proposed merging lp:~louis-bouchard/vmbuilder/vmbuilder_531599_devmap into lp:vmbuilder.

Requested reviews:
  VMBuilder (vmbuilder)

For more details, see:
https://code.launchpad.net/~louis-bouchard/vmbuilder/vmbuilder_531599_devmap/+merge/87587

Following reported regression in bug 531599, the previous patch has been fine tuned to only remove dm map when they exist.
-- 
https://code.launchpad.net/~louis-bouchard/vmbuilder/vmbuilder_531599_devmap/+merge/87587
Your team VMBuilder is requested to review the proposed merge of lp:~louis-bouchard/vmbuilder/vmbuilder_531599_devmap into lp:vmbuilder.
=== modified file 'VMBuilder/disk.py'
--- VMBuilder/disk.py	2011-12-22 16:49:31 +0000
+++ VMBuilder/disk.py	2012-01-05 10:26:29 +0000
@@ -190,9 +190,13 @@
         run_cmd('kpartx', '-d', self.filename, ignore_fail=ignore_fail)
 
         for part in self.partitions:
+            logging.debug("Removing partition %s" % part.filename)
             parted_oldmap=part.filename[len("/dev/mapper/"):-1]+"p"+part.filename[-1]
-            logging.debug("Removing parted old map with  'dmsetup remove %s'" % parted_oldmap)
-            run_cmd('dmsetup', 'remove', parted_oldmap, ignore_fail=ignore_fail)
+            dmsetup_output = run_cmd('dmsetup', 'info', parted_oldmap, ignore_fail=True)
+            for line in dmsetup_output.split('\n'):
+                if line.startswith("State:") and line.endswith("ACTIVE"):
+                    logging.debug("Removing parted old map with  'dmsetup remove %s'" % parted_oldmap)
+                    dmsetup_output=run_cmd('dmsetup', 'remove', parted_oldmap, ignore_fail=ignore_fail)
             part.set_filename(None)
 
     def add_part(self, begin, length, type, mntpnt):