Clear superblock on devices when deleting
authorJamie Cameron <jcameron@webmin.com>
Thu, 20 Aug 2009 05:57:41 +0000 (22:57 -0700)
committerJamie Cameron <jcameron@webmin.com>
Thu, 20 Aug 2009 05:57:41 +0000 (22:57 -0700)
raid/CHANGELOG
raid/raid-lib.pl

index 559bc11..41bb129 100644 (file)
@@ -23,3 +23,4 @@ Run the update-initramfs -u command after changing mdadm.conf, to sync it into a
 ---- Changes since 1.480 ----
 Raw disks with no partitions can now also be used as RAID members.
 Spare groups can now be created and used when creating a RAID device.
+When a RAID set is deleted, the superblocks on component devices are cleared in order to remove metadata about the old RAID set.
index 063d51d..35eba56 100755 (executable)
@@ -260,8 +260,19 @@ if ($raid_mode eq "raidtools") {
        }
 else {
        # Zero out the RAID
-       &system_logged(
-               "mdadm --zero-superblock $_[0]->{'value'} >/dev/null 2>&1");
+       &system_logged("mdadm --zero-superblock ".
+                      "$_[0]->{'value'} >/dev/null 2>&1");
+
+       # Zero out component superblocks
+       my @devs = &find('device', $_[0]->{'members'});
+       foreach $d (@devs) {
+               if (&find('raid-disk', $d->{'members'}) ||
+                   &find('parity-disk', $d->{'members'}) ||
+                   &find('spare-disk', $d->{'members'})) {
+                       &system_logged("mdadm --zero-superblock ".
+                                      "$d->{'value'} >/dev/null 2>&1");
+                       }
+               }
 
        # Remove from /etc/mdadm.conf
        local ($d, %devices);