diff options
| author | Maarten Vanraes <alien@mageia.org> | 2016-05-18 01:12:58 +0200 | 
|---|---|---|
| committer | Maarten Vanraes <alien@mageia.org> | 2016-05-18 01:12:58 +0200 | 
| commit | deffb1b1cd2b2d593384969a5250ac9684e8f938 (patch) | |
| tree | d6686613122330df2b228dfb5080dd1a18b04ded /lib/ManaTools/Shared/disk_backend | |
| parent | fe1738223ab39c2fc0caaa431ad1fdb34e382530 (diff) | |
| download | manatools-deffb1b1cd2b2d593384969a5250ac9684e8f938.tar manatools-deffb1b1cd2b2d593384969a5250ac9684e8f938.tar.gz manatools-deffb1b1cd2b2d593384969a5250ac9684e8f938.tar.bz2 manatools-deffb1b1cd2b2d593384969a5250ac9684e8f938.tar.xz manatools-deffb1b1cd2b2d593384969a5250ac9684e8f938.zip | |
Swap: adjust to new PartLink system
Diffstat (limited to 'lib/ManaTools/Shared/disk_backend')
| -rw-r--r-- | lib/ManaTools/Shared/disk_backend/Plugin/Swap.pm | 64 | 
1 files changed, 63 insertions, 1 deletions
| diff --git a/lib/ManaTools/Shared/disk_backend/Plugin/Swap.pm b/lib/ManaTools/Shared/disk_backend/Plugin/Swap.pm index 9f1da86f..3953dd44 100644 --- a/lib/ManaTools/Shared/disk_backend/Plugin/Swap.pm +++ b/lib/ManaTools/Shared/disk_backend/Plugin/Swap.pm @@ -98,7 +98,26 @@ override ('probe', sub {      <F>;      while (my $line = <F>) {          my @fields = split(/[ \t\r\n]+/, $line); -        my $part = $self->parent->mkpart('Swap', {path => $fields[0], plugin => $self}); + +        # look or create the part +        my $part = $self->parent->trypart(ManaTools::Shared::disk_backend::Part->LoadedState, sub { +            my $part = shift; +            my $parameters = shift; +            return ($part->path() eq $parameters->{path}); +        }, 'Swap', {path => $fields[0], plugin => $self, loaded => undef, saved => undef}); + +        # look for the parent part if not set +        if (!$part->has_link(undef, 'parent')) { +            my @stat = stat($fields[0]); +            if (($stat[2] >> 13) == 3) { +                my $dev = $stat[6]; +                my $minor = $dev % 256; +                my $major = int (($dev - $minor) / 256); +                my @parents = $self->parent->findpartprop(undef, 'dev', $major .':'. $minor); +                $part->add_taglink($parents[0], 'parent') if (scalar(@parents) > 0); +            } +        } +          $part->prop('filename', $fields[0]);          $part->prop('swaptype', $fields[1]);          $part->prop('size', $fields[2]); @@ -197,4 +216,47 @@ class_has '+out_restriction' => (      }  ); +class_has '+order' => ( +    default => sub { +        sub { +            my $self = shift; +            my $part = shift; +            return ($self->prop('priority') <=> $part->prop('priority')); +        } +    } +); + +class_has '+restrictions' => ( +    default => sub { +        return { +            parent => sub { +                my $self = shift; +                my $part = shift; +                return $part->does('ManaTools::Shared::disk_backend::BlockDevice') || $part->does('ManaTools::Shared::disk_backend::FileRole'); +            }, +            # TODO: memory Part? +            child => sub { +                my $self = shift; +                my $part = shift; +                return 0; +            }, +            sibling => sub { +                my $self = shift; +                my $part = shift; +                return $part->isa('ManaTools::Shared::disk_backend::Part::Swap'); +            }, +            previous => sub { +                my $self = shift; +                my $part = shift; +                return $part->isa('ManaTools::Shared::disk_backend::Part::Swap'); +            }, +            next => sub { +                my $self = shift; +                my $part = shift; +                return $part->isa('ManaTools::Shared::disk_backend::Part::Swap'); +            }, +        } +    } +); +  1; | 
