From d05637f99271e081f9579b69cf77de1969839561 Mon Sep 17 00:00:00 2001 From: Rafi Khardalian Date: Wed, 5 Sep 2012 16:09:45 +0000 Subject: Fix volume deletion when device mapper is used Call dmsetup remove if there is a /dev/mapper/nova--volumes- element present. Resolves bug 979020 Change-Id: Iddaaed411a77dda4bd32f9a97687ff17744119eb --- etc/nova/rootwrap.d/volume.filters | 4 ++++ nova/volume/driver.py | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/etc/nova/rootwrap.d/volume.filters b/etc/nova/rootwrap.d/volume.filters index 9451e5115..e2b0f6203 100644 --- a/etc/nova/rootwrap.d/volume.filters +++ b/etc/nova/rootwrap.d/volume.filters @@ -27,3 +27,7 @@ lvdisplay: CommandFilter, /sbin/lvdisplay, root # nova/volume/driver.py: 'iscsiadm', '-m', 'node', '-T', ... iscsiadm: CommandFilter, /sbin/iscsiadm, root iscsiadm_usr: CommandFilter, /usr/bin/iscsiadm, root + +# nova/volume/driver.py +dmsetup: CommandFilter, /sbin/dmsetup, root +dmsetup_usr: CommandFilter, /usr/sbin/dmsetup, root diff --git a/nova/volume/driver.py b/nova/volume/driver.py index f7cd9fb57..bb80d9f93 100644 --- a/nova/volume/driver.py +++ b/nova/volume/driver.py @@ -142,6 +142,10 @@ class VolumeDriver(object): # zero out old volumes to prevent data leaking between users # TODO(ja): reclaiming space should be done lazy and low priority self._copy_volume('/dev/zero', self.local_path(volume), size_in_g) + dev_path = self.local_path(volume) + if os.path.exists(dev_path): + self._try_execute('dmsetup', 'remove', '-f', dev_path, + run_as_root=True) self._try_execute('lvremove', '-f', "%s/%s" % (FLAGS.volume_group, self._escape_snapshot(volume['name'])), -- cgit