Missing disk option
authorJamie Cameron <jcameron@webmin.com>
Wed, 22 Apr 2009 22:54:50 +0000 (22:54 +0000)
committerJamie Cameron <jcameron@webmin.com>
Wed, 22 Apr 2009 22:54:50 +0000 (22:54 +0000)
raid/CHANGELOG
raid/create_raid.cgi
raid/lang/en
raid/raid-lib.pl
raid/raid_form.cgi

index 06b860a..582034b 100644 (file)
@@ -17,3 +17,5 @@ Added a confirmation page before deleting a RAID array.
 Create /dev/md* device file if missing when creating a RAID set.
 ---- Changes since 1.450 ----
 Added a button for changing the number of active devices in a RAID 5 or 6 set, thanks to Diego Zuccato.
+---- Changes since 1.480 ----
+Added an option to the RAID 1 creation form to mark one of the disks as missing initially.
index dd2b0c7..cb2a0e7 100755 (executable)
@@ -28,7 +28,7 @@ if ($in{'parity'}) {
 if (!@disks) {
        &error($text{'create_edisks'});
        }
-elsif ($in{'level'} == 1 && @disks < 2) {
+elsif ($in{'level'} == 1 && scalar(@disks)+$in{'missing'} < 2) {
        &error($text{'create_edisks2'});
        }
 push(@members, { 'name' => 'nr-raid-disks',
@@ -67,7 +67,7 @@ if ($in{'pdisk'}) {
 
 &create_raid($raid);
 &unlock_raid_files();
-if ($err = &make_raid($raid, $in{'force'})) {
+if ($err = &make_raid($raid, $in{'force'}, $in{'missing'})) {
        &delete_raid($raid);
        &error($err);
        }
index d4eb957..cd2c73b 100644 (file)
@@ -36,6 +36,7 @@ create_level=RAID level
 create_disks=Partitions in RAID
 create_spares=Spare partitions
 create_pdisk=Parity partition
+create_missing=Include currently missing disk?
 create_pauto=Automatic
 create_nodisks=No free partitions are available for RAID.
 create_super=Persistent superblock?
index b20f9dd..1fbf5c5 100644 (file)
@@ -269,7 +269,7 @@ else {
        }
 }
 
-# make_raid(&raid, force)
+# make_raid(&raid, force, [missing])
 # Call mkraid or mdadm to make a raid set for real
 sub make_raid
 {
@@ -307,6 +307,9 @@ else {
                        }
                }
        local $cmd = "mdadm --$mode --level $lvl --chunk $chunk";
+       if ($_[2]) {
+               push(@devices, "missing");
+               }
        $cmd .= " --parity $parity" if ($parity);
        $cmd .= " --raid-devices ".scalar(@devices);
        $cmd .= " --spare-devices ".scalar(@spares) if (@spares);
index 737f723..868b5ed 100755 (executable)
@@ -81,6 +81,12 @@ if ($lvl == 4 && $raid_mode ne 'mdadm') {
                                          @disks ], 4, 1));
        }
 
+# Missing disk option
+if ($lvl == 1 && $raid_mode eq 'mdadm') {
+       print &ui_table_row($text{'create_missing'},
+               &ui_yesno_radio("missing", 0));
+       }
+
 # Force creation
 print &ui_table_row($text{'create_force'},
        &ui_yesno_radio("force", 0));