#!/usr/local/bin/perl # save_lv.cgi # Create, update or delete a logical volume require './lvm-lib.pl'; &foreign_require("fdisk", "fdisk-lib.pl"); &ReadParse(); ($vg) = grep { $_->{'name'} eq $in{'vg'} } &list_volume_groups(); ($lv) = grep { $_->{'name'} eq $in{'lv'} } &list_logical_volumes($in{'vg'}) if ($in{'lv'}); if ($in{'confirm'}) { # Delete the logical volume &error_setup($text{'lv_err2'}); $err = &delete_logical_volume($lv); &error("
$err") if ($err); &webmin_log("delete", "lv", $in{'lv'}, $lv); &redirect("index.cgi?mode=lvs"); } elsif ($in{'delete'}) { # Ask the user if he is sure &ui_print_header(undef, $text{'lv_delete'}, ""); print "
\n"; print &ui_form_end([ [ 'confirm', $text{'lv_deleteok'} ] ]); print "
$err") if ($err); &webmin_log("create", "lv", $in{'name'}, $lv); } elsif ($lv->{'is_snap'}) { # Modifying a snapshot if ($lv->{'size'} != $in{'size'}) { $err = &resize_logical_volume($lv, $in{'size'}); &error("
$err") if ($err); $lv->{'size'} = $in{'size'}; } if ($lv->{'name'} ne $in{'name'}) { # Need to rename $err = &rename_logical_volume($lv, $in{'name'}); &error("
$err") if ($err); $lv->{'name'} = $in{'name'}; } } else { # Modifying the logical volume @stat = &device_status($lv->{'device'}); if ($lv->{'size'} != $in{'size'}) { # Is the new size too big? local $nblocks = int($in{'size'} / $vg->{'pe_size'})+1; local $oblocks = int($lv->{'size'} / $vg->{'pe_size'})+1; if ($vg->{'pe_alloc'} - $oblocks + $nblocks > $vg->{'pe_total'}) { #&error(&text('lv_toobig', $nblocks, "$vg->{'pe_size'} kB", $vg->{'pe_total'} - $vg->{'pe_alloc'})); } local $realsize = $nblocks * $vg->{'pe_size'}; if ($in{'sizeconfirm'}) { # Just resize the logical volume $err = &resize_logical_volume($lv, $realsize); &error("
$err") if ($err); } else { local $can = &can_resize_filesystem($stat[1]); if ($can == 2 || $can == 1 && $realsize > $lv->{'size'}) { # Attempt to resize properly $err = &resize_filesystem($lv, $stat[1], $realsize); if ($err) { $err = &text('resize_fs', $stat[1], "
$err
$err") if ($err); } if ($lv->{'name'} ne $in{'name'}) { # Need to rename $err = &rename_logical_volume($lv, $in{'name'}); &error("
$err") if ($err); $lv->{'name'} = $in{'name'}; } &webmin_log("modify", "lv", $in{'lv'}, $lv); } &redirect("index.cgi?mode=lvs"); }