diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ManaTools/Shared/disk_backend/Part.pm | 9 | ||||
-rw-r--r-- | lib/ManaTools/Shared/disk_backend/Plugin/Btrfs.pm | 10 |
2 files changed, 16 insertions, 3 deletions
diff --git a/lib/ManaTools/Shared/disk_backend/Part.pm b/lib/ManaTools/Shared/disk_backend/Part.pm index 44961628..a2455d0f 100644 --- a/lib/ManaTools/Shared/disk_backend/Part.pm +++ b/lib/ManaTools/Shared/disk_backend/Part.pm @@ -219,7 +219,10 @@ sub allow_tag { } sub _reverse_tag { + my $self = shift; my $tag = shift; + my $rtag = inner($tag); + return $rtag if (defined($rtag) && $tag ne $rtag); return 'child' if ($tag eq 'parent'); return 'parent' if ($tag eq 'child'); return 'previous' if ($tag eq 'next'); @@ -243,7 +246,7 @@ sub add_link { my $self = shift; my $part = shift; my @tags = @_; - my @rtags = grep { defined $_ } map { _reverse_tag($_) } @tags; + my @rtags = grep { defined $_ } map { $self->_reverse_tag($_) } @tags; my $partlink1 = $self->_add_partlink($part, @tags); my $partlink2 = $part->_add_partlink($self, @rtags); return ($partlink1, $partlink2); @@ -253,7 +256,7 @@ sub add_taglink { my $self = shift; my $part = shift; my @tags = @_; - my @rtags = grep { defined $_ } map { _reverse_tag($_) } @tags; + my @rtags = grep { defined $_ } map { $self->_reverse_tag($_) } @tags; # partlink1 my $partlink1 = $self->find_link($part); @@ -334,7 +337,7 @@ sub remove_taglinks { my $self = shift; my $part = shift; my @tags = @_; - my @rtags = grep { defined $_ } map { _reverse_tag($_) } @tags; + my @rtags = grep { defined $_ } map { $self->_reverse_tag($_) } @tags; # partlink1 my $partlink1 = $self->find_link($part); diff --git a/lib/ManaTools/Shared/disk_backend/Plugin/Btrfs.pm b/lib/ManaTools/Shared/disk_backend/Plugin/Btrfs.pm index 9ee2a06e..0683f669 100644 --- a/lib/ManaTools/Shared/disk_backend/Plugin/Btrfs.pm +++ b/lib/ManaTools/Shared/disk_backend/Plugin/Btrfs.pm @@ -303,6 +303,16 @@ class_has '+restrictions' => ( } ); +augment('_reverse_tag', sub { + my $self = shift; + my $tag = shift; + my $rtag = inner($tag); + return $rtag if (defined($rtag) && $tag ne $rtag); + return 'childsubvol' if ($tag eq 'parentsubvol'); + return 'parentsubvol' if ($tag eq 'childsubvol'); + return $tag; +}); + around('find_path', sub { my $orig = shift; my $self = shift; |