diff options
Diffstat (limited to 'lib/ManaTools/Shared/disk_backend/Plugin/Partition.pm')
-rw-r--r-- | lib/ManaTools/Shared/disk_backend/Plugin/Partition.pm | 163 |
1 files changed, 0 insertions, 163 deletions
diff --git a/lib/ManaTools/Shared/disk_backend/Plugin/Partition.pm b/lib/ManaTools/Shared/disk_backend/Plugin/Partition.pm index 483f024c..e9a67ab8 100644 --- a/lib/ManaTools/Shared/disk_backend/Plugin/Partition.pm +++ b/lib/ManaTools/Shared/disk_backend/Plugin/Partition.pm @@ -206,135 +206,6 @@ override ('changedpart', sub { return 1; }); -#============================================================= - -=head2 load - -=head3 OUTPUT - - 0 if failed, 1 if success or unneeded - -=head3 DESCRIPTION - - this method will load all disks partition tables - -=cut - -#============================================================= -override ('loadio', sub { - my $self = shift; - my $io = shift; - # get the partition table - my $pt = ManaTools::Shared::disk_backend::PartitionTable->new(parted => $self->tool('parted'), disk => $io->file()); - # get partitions and mkio them all - for my $p (values %{$pt->partitions()}) { - my @stat = stat($p->{'file'}); - my $dev = $stat[6]; - my $minor = $dev % 256; - my $major = int (($dev - $minor) / 256); - my $io = $self->parent->mkio('Partition', {id => $p->{'file'} =~ s'^.+/''r}); - $io->prop('dev', $major .':'. $minor); - $io->sync_majorminor(); - $io->prop('start', $p->{'start'}); - $io->prop('size', $p->{'size'}); - $io->prop('num', $p->{'num'}); - # TODO: also create the Part (if it doesn't already exists) and link it - } - return 1; -}); - -#============================================================= - -=head2 probeio - -=head3 OUTPUT - - 0 if failed, 1 if success or unneeded - -=head3 DESCRIPTION - - this method will try to probe the specific disk IO and get partitions - -=cut - -#============================================================= -override ('probeio', sub { - my $self = shift; - my $io = shift; - my $part = undef; - # return if $io is not the correct type - if ($io->type() ne 'Disk') { - return 1; - } - if ($io->prop('present') == 0) { - return 1; - } - # find out if the IO already has a part, if not: make a part - my @parts = $self->parent->findin($io); - if (scalar(@parts) > 0) { - $part = $parts[0]; - } - else { - $part = $self->parent->mkpart('PartitionTable', {plugin => $self}); - if (!defined($part)) { - return 0; - } - # assign this IO to the ins - if (!$part->in_add($io)) { - return 0; - } - # add properties - # TODO: partition table type, size and position, logical alignment, etc... - # default partition is always 1 sector ? - $part->prop('size', 1); - # add an action - $part->add_action('addPartition', 'Add a partition', $part, sub { - my $self = shift; - my $part = $self->item(); - print STDERR "Add partition is not implemented...\n"; - return 1; - }, sub { - my $self = shift; - my $part = $self->item(); - return 1; - }); - } - @parts = $self->parent->findin($io); - my $err = 0; - my $partitions = 0; - # find subdevices in /sys/ - for my $pf (glob($io->devicepath(). "/". $io->id() ."*")) { - my $io = $self->parent->mkio('Partition', {id => $pf =~ s'^.+/''r, devicepath => $pf}); - $io->prop_from_file('sectors', $pf . '/size'); - # sectors are always 512 bytes here! - $io->prop('size', $io->prop('sectors') * 512); - $io->prop_from_file('start', $pf . '/start'); - $io->prop_from_file('ro', $pf . '/ro'); - $io->prop_from_file('dev', $pf . '/dev'); - $io->sync_majorminor(); - $io->prop('num', $pf =~ s/^.+([0-9]+)$/$1/r); - $partitions = $partitions + 1; - if (!$part->out_add($io)) { - $err = 1; - } - } - $part->prop('partitions', $partitions); - # find out how to differentiate between an empty partition table and no partition table - return $err == 0; -}); - -package ManaTools::Shared::disk_backend::IO::Partition; - -use Moose; - -extends 'ManaTools::Shared::disk_backend::IO'; - -with 'ManaTools::Shared::disk_backend::BlockDevice'; - -has '+type' => ( - default => 'Partition' -); - package ManaTools::Shared::disk_backend::Part::PartitionTable; use Moose; @@ -367,40 +238,6 @@ class_has '+restrictions' => ( } ); -class_has '+in_restriction' => ( - default => sub { - return sub { - my $self = shift; - my $io = shift; - my $del = shift; - if (!defined $del) { - $del = 0; - } - if ($del != 0) { - return ($self->in_length() > 0); - } - return ($self->in_length() == 0 && ref($io) eq 'ManaTools::Shared::disk_backend::IO::Disk'); - }; - } -); - -class_has '+out_restriction' => ( - default => sub { - return sub { - my $self = shift; - my $io = shift; - my $del = shift; - if (!defined $del) { - $del = 0; - } - if ($del != 0) { - return ($self->out_length() > 0); - } - return ($self->out_length() < 4 && ref($io) eq 'ManaTools::Shared::disk_backend::IO::Partition'); - }; - } -); - package ManaTools::Shared::disk_backend::Part::PartitionElement; use Moose; |