Start of slice deletion form

This commit is contained in:
Jamie Cameron
2013-03-25 22:28:44 -07:00
parent bc6499851b
commit 6ba2a72a48
4 changed files with 75 additions and 5 deletions

View File

@@ -61,7 +61,9 @@ foreach my $dev (glob("/dev/ada[0-9]"),
$disk->{'blksper'} = $4;
$disk->{'blocks'} = $disk->{'cylinders'} *
$disk->{'blksper'};
$disk->{'size'} = $disk->{'blocks'} * 512;
$disk->{'blocksize'} = 512; # Guessed?
$disk->{'size'} = $disk->{'blocks'} *
$disk->{'blocksize'};
}
elsif ($lines[$i+1] !~ /<UNUSED>/ &&
$lines[$i] =~ /data\s+for\s+partition\s+(\d+)/) {
@@ -122,7 +124,8 @@ foreach my $dev (glob("/dev/ada[0-9]"),
'startblock' => $3,
'type' => $4,
'device' =>$slice->{'device'}.$1 };
# XXX how to get size?
$part->{'size'} = $part->{'blocks'} *
$disk->{'blocksize'};
push(@{$slice->{'parts'}}, $part);
}
}

44
bsdfdisk/delete_slice.cgi Normal file
View File

@@ -0,0 +1,44 @@
#!/usr/local/bin/perl
# Delete a slice, after asking for confirmation
use strict;
use warnings;
require './bsdfdisk-lib.pl';
our (%in, %text, $module_name);
&ReadParse();
# Get the disk and slice
my @disks = &list_disks_partitions();
my ($disk) = grep { $_->{'device'} eq $in{'device'} } @disks;
$disk || &error($text{'disk_egone'});
my ($slice) = grep { $_->{'number'} eq $in{'slice'} } @{$disk->{'slices'}};
$slice || &error($text{'slice_egone'});
&ui_print_header($slice->{'desc'}, $text{'dslice_title'}, "");
if ($in{'confirm'}) {
# Delete it
}
else {
# Ask first
my @warn;
foreach my $p (@{$slice->{'parts'}}) {
my @st = &fdisk::device_status($p->{'device'});
if (@st) {
my $use = &fdisk::device_status_link(@st);
push(@warn, $use);
}
}
print &ui_confirmation_form(
"delete_slice.cgi",
&text('dslice_rusure', "<tt>$slice->{'device'}</tt>"),
[ [ "device", $in{'device'} ],
[ "slice", $in{'slice'} ] ],
[ [ "confirm", $text{'dslice_confirm'} ] ],
undef,
@warn ? &text('dslice_warn', join(" ", @warn)) : undef);
}
&ui_print_footer("edit_disk.cgi?device=$in{'device'}",
$text{'disk_return'});

View File

@@ -1,5 +1,5 @@
#!/usr/local/bin/perl
# Show partitions on one disk
# Show details of a disk, and slices on it
use strict;
use warnings;
@@ -26,7 +26,7 @@ push(@info, &text('disk_device', "<tt>$disk->{'device'}</tt>"));
print &ui_links_row(\@info),"<p>\n";
# Show partitions table
my @links = ( "<a href='edit_part.cgi?device=".&urlize($disk->{'device'}).
my @links = ( "<a href='slice_form.cgi?device=".&urlize($disk->{'device'}).
"&new=1'>".$text{'disk_add'}."</a>" );
if (@{$disk->{'slices'}}) {
print &ui_links_row(\@links);
@@ -55,7 +55,7 @@ if (@{$disk->{'slices'}}) {
# Add row for the slice
my $url = "edit_slice.cgi?device=".&urlize($disk->{'device'}).
"&part=".$p->{'number'};
"&slice=".$p->{'number'};
print &ui_columns_row([
"<a href='$url'>$p->{'number'}</a>",
"<a href='$url'>".&fdisk::tag_name($p->{'type'})."</a>",

View File

@@ -31,3 +31,26 @@ disk_add=Add a new slice.
select_device=$1 device $2
select_slice=$1 device $2 slice $3
select_part=$1 device $2 slice $3 partition $4
slice_title=Edit Slice
slice_egone=Selected slice does not exist!
slice_ssize=<b>Slice size:</b> $1
slice_sstart=<b>Starting block:</b> $1
slice_sblocks=<b>Number of blocks:</b> $1
slice_stype=<b>Slice type:</b> $1
slice_add=Add a new partition.
slice_letter=Partition
slice_type=Type
slice_extent=Extent
slice_size=Size
slice_start=Start block
slice_end=End block
slice_use=Used by
slice_none=This slice has no partitions yet.
slice_delete=Delete Slice
slice_deletedesc=Delete this slice and all partitions and filesystems within it. Any data on those filesystem will be almost certainly unrecoverable.
dslice_title=Delete Slice
dslice_rusure=Are you sure you want to delete the slice $1? Any partitions and filesystems within it will also be deleted.
dslice_warn=Warning - this slice is currently used by : $1
dslice_confirm=Delete Now