#!/usr/local/bin/perl # raid_form.cgi # Display a form for creating a raid device require './raid-lib.pl'; &foreign_require("mount", "mount-lib.pl"); &foreign_require("lvm", "lvm-lib.pl"); &ReadParse(); $conf = &get_raidtab(); # Display headers $max = 0; foreach $c (@$conf) { if ($c->{'value'} =~ /md(\d+)$/ && $1 >= $max) { $max = $1+1; } } &ui_print_header(undef, $text{'create_title'}, ""); $raid = { 'value' => "/dev/md$max", 'members' => [ { 'name' => 'raid-level', 'value' => $in{'level'} }, { 'name' => 'persistent-superblock', 'value' => 1 } ] }; # Find available partitions $disks = &find_free_partitions(undef, 1, 1); if (!$disks) { print "

$text{'create_nodisks'}

\n"; &ui_print_footer("", $text{'index_return'}); exit; } print "

\n"; print "\n"; print "\n"; print "\n"; print "
$text{'create_header'}
\n"; print "\n"; print "\n"; print "\n"; $lvl = &find_value('raid-level', $raid->{'members'}); print "\n"; print "\n"; print "\n"; $super = &find_value('persistent-superblock', $raid->{'members'}); print "\n"; printf "\n", $super ? '' : 'checked', $text{'no'}; if ($lvl >= 5) { $parity = &find_value('parity-algorithm', $raid->{'members'}); print "\n"; print "\n"; } $chunk = &find_value('chunk-size', $raid->{'members'}); print "\n"; print "\n"; # Display partitions in raid, spares and parity print "\n"; print "\n"; if ($lvl >= 4 && $lvl != 10) { print "\n"; print "\n"; } if ($lvl == 4 && $raid_mode ne 'mdadm') { print "\n"; print "\n"; } print "\n"; print "\n"; print "
$text{'create_device'}$raid->{'value'}
$text{'create_level'}",$lvl eq 'linear' ? $text{'linear'} : $text{"raid$lvl"},"
$text{'create_super'} %s\n", $super ? 'checked' : '', $text{'yes'}; printf " %s
$text{'create_parity'}
$text{'create_chunk'}
$text{'create_disks'}
$text{'create_spares'}
$text{'create_pdisk'}
$text{'create_force'} $text{'yes'}\n"; print " $text{'no'}\n"; print "
\n"; print "
\n"; &ui_print_footer("", $text{'index_return'});