3 # Display a form for creating a raid device
5 require './raid-lib.pl';
6 &foreign_require("mount");
7 &foreign_require("lvm");
9 $conf = &get_raidtab();
11 # Create initial object
13 if ($c->{'value'} =~ /md(\d+)$/) {
21 $raid = { 'value' => "/dev/md$max",
22 'members' => [ { 'name' => 'raid-level',
23 'value' => $in{'level'} },
24 { 'name' => 'persistent-superblock',
28 &ui_print_header(undef, $text{'create_title'}, "");
30 # Find available partitions
31 @disks = &find_free_partitions(undef, 1, 1);
33 print "<p><b>$text{'create_nodisks'}</b> <p>\n";
34 &ui_print_footer("", $text{'index_return'});
38 print &ui_form_start("create_raid.cgi");
39 print &ui_hidden("idx", $in{'idx'});
40 print &ui_table_start($text{'create_header'}, undef, 2);
43 print &ui_table_row($text{'create_device'}, "<tt>$raid->{'value'}</tt>");
44 print &ui_hidden("device", $raid->{'value'});
47 $lvl = &find_value('raid-level', $raid->{'members'});
48 print &ui_table_row($text{'create_level'},
49 $lvl eq 'linear' ? $text{'linear'} : $text{"raid$lvl"});
50 print &ui_hidden("level", $lvl);
53 $super = &find_value('persistent-superblock', $raid->{'members'});
54 print &ui_table_row($text{'create_super'},
55 &ui_yesno_radio("super", $super ? 1 : 0));
58 if ($lvl == 5 || $lvl == 6) {
59 $layout = &find_value('parity-algorithm', $raid->{'members'});
60 print &ui_table_row($text{'create_parity'},
61 &ui_select("layout", $layout,
62 [ [ '', $text{'default'} ],
63 'left-asymmetric', 'right-asymmetric',
64 'left-symmetric', 'right-symmetric',
65 'parity-first', 'parity-last' ]));
69 $layout = &find_value('parity-algorithm', $raid->{'members'});
70 print &ui_table_row($text{'create_parity'},
71 &ui_select("layout", $layout,
72 [ [ '', $text{'default'} ],
77 $chunk = &find_value('chunk-size', $raid->{'members'});
78 for($i=4; $i<=4096; $i*=2) { push(@chunks, [ $i, $i." kB" ]); }
79 print &ui_table_row($text{'create_chunk'},
80 &ui_select("chunk", $chunk, \@chunks));
82 # Display partitions in raid, spares and parity
83 print &ui_table_row($text{'create_disks'},
84 &ui_select("disks", undef, \@disks, 4, 1));
86 if ($lvl == 1 || $lvl == 4 || $lvl == 5 || $lvl == 6 || $lvl == 10) {
87 print &ui_table_row($text{'create_spares'},
88 &ui_select("spares", undef, \@disks, 4, 1));
91 if ($lvl == 4 && $raid_mode ne 'mdadm') {
92 print &ui_table_row($text{'create_pdisk'},
93 &ui_select("pdisk", '', [ [ '', $text{'create_auto'} ],
98 if ($lvl == 1 && $raid_mode eq 'mdadm') {
99 print &ui_table_row($text{'create_missing'},
100 &ui_yesno_radio("missing", 0));
103 # Spare-group name option
104 if ($raid_mode eq 'mdadm') {
105 @opts = ( [ 0, $text{'create_nogroup'} ] );
107 foreach $c (@$conf) {
108 $sg = &find_value("spare-group", $c->{'members'});
109 push(@groups, $sg) if ($sg);
112 push(@opts, [ 1, $text{'create_oldgroup'},
113 &ui_select("group", undef, \@groups) ]);
115 push(@opts, [ 2, $text{'create_newgroup'},
116 &ui_textbox("newgroup", undef, 30) ]);
117 print &ui_table_row($text{'create_group'},
118 &ui_radio_table("group_mode", 0, \@opts, 1));
122 print &ui_table_row($text{'create_force'},
123 &ui_yesno_radio("force", 0));
126 if ($raid_mode eq 'mdadm') {
127 print &ui_table_row($text{'create_assume'},
128 &ui_yesno_radio("assume", 0));
131 print &ui_table_end();
132 print &ui_form_end([ [ undef, $text{'create'} ] ]);
134 &ui_print_footer("", $text{'index_return'});