aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaarten Vanraes <alien@mageia.org>2016-08-06 14:36:56 +0200
committerMaarten Vanraes <alien@mageia.org>2016-08-06 14:36:56 +0200
commit9fd53f54fa7ff9cdf7f8525a46eddbabd80c5b10 (patch)
tree9e65f95934d745f41c8c89937781eb570dce6b4d
parentb7e67cdab93978bf7888007521452cb313104efb (diff)
downloadmanatools-9fd53f54fa7ff9cdf7f8525a46eddbabd80c5b10.tar
manatools-9fd53f54fa7ff9cdf7f8525a46eddbabd80c5b10.tar.gz
manatools-9fd53f54fa7ff9cdf7f8525a46eddbabd80c5b10.tar.bz2
manatools-9fd53f54fa7ff9cdf7f8525a46eddbabd80c5b10.tar.xz
manatools-9fd53f54fa7ff9cdf7f8525a46eddbabd80c5b10.zip
Part: allow to extend auto-reversible tags
-rw-r--r--lib/ManaTools/Shared/disk_backend/Part.pm9
-rw-r--r--lib/ManaTools/Shared/disk_backend/Plugin/Btrfs.pm10
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;