Make invirt-lvm lvcreate-all use sqlalchemy correctly.
[invirt/packages/invirt-remote.git] / host / usr / sbin / invirt-janitor
index 75a637a..4f79c5b 100755 (executable)
@@ -40,15 +40,32 @@ def cleanup():
         lv_path = '/dev/xenvg/%s' % lv
 
         try:
+            # If the LV name doesn't start with old_, we probably
+            # don't actually want to be deleting it.
+            #
+            # Put it in the try block because we still want to delete
+            # the state file.
+            if not lv.startswith('old_'):
+                continue
+
+            # If the LV doesn't exist, for whatever reason, don't
+            # proceed because the dd will simply fill the devfs
+            # by creating a regular file and filling it with zeros.
+            if not os.path.exists(lv_path):
+                continue
+
             syslog.syslog(syslog.LOG_INFO, "Cleaning up LV '%s'" % lv_path)
 
-            subprocess.check_call(['/usr/bin/ionice',
-                                   '-c', '2',
-                                   '-n', '7',
-                                   '/bin/dd',
-                                   'if=/dev/zero',
-                                   'of=%s' % lv_path,
-                                   'bs=1M'])
+            # In a perfect world, this should be erroring out with
+            # ENOSPC, so we ignore errors
+            subprocess.call(['/usr/bin/ionice',
+                             '-c', '2',
+                             '-n', '7',
+                             '/usr/bin/nice',
+                             '/bin/dd',
+                             'if=/dev/zero',
+                             'of=%s' % lv_path,
+                             'bs=1M'])
 
             # Ignore any errors here, because there's really just not
             # anything we can do.