aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ManaTools/Shared/disk_backend/Plugin/Swap.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ManaTools/Shared/disk_backend/Plugin/Swap.pm')
-rw-r--r--lib/ManaTools/Shared/disk_backend/Plugin/Swap.pm23
1 files changed, 22 insertions, 1 deletions
diff --git a/lib/ManaTools/Shared/disk_backend/Plugin/Swap.pm b/lib/ManaTools/Shared/disk_backend/Plugin/Swap.pm
index b7d6c064..696d7aab 100644
--- a/lib/ManaTools/Shared/disk_backend/Plugin/Swap.pm
+++ b/lib/ManaTools/Shared/disk_backend/Plugin/Swap.pm
@@ -66,7 +66,11 @@ has '+dependencies' => (
has '+tools' => (
default => sub {
- return {'swaplabel' => '/usr/sbin/swaplabel'};
+ return {
+ 'swaplabel' => '/usr/sbin/swaplabel',
+ 'swapon' => '/usr/sbin/swapon',
+ 'swapoff' => '/usr/sbin/swapoff',
+ };
}
);
@@ -100,6 +104,23 @@ override ('probe', sub {
$part->prop('size', $fields[2]);
$part->prop('used', $fields[3]);
$part->prop('priority', $fields[4]);
+ $part->prop('active', 1);
+
+ # add a swapoff action
+ $part->add_action('swapoff', 'Turn off swap', undef, sub {
+ my $self = shift;
+ my $plugin = $self->plugin();
+ print STDERR "Dangerous actions are disabled: $self\n";
+ return 1;
+ if ($plugin->tool_exec('swapoff', $self->prop('filename')) == 0) {
+ $self->prop('active', 0);
+ $part->prop('priority', 0);
+ }
+ return 1;
+ }, sub {
+ my $self = shift;
+ return $self->prop('active') == 1;
+ });
# use swaplabel to get label and uuid
my %labelfields = $self->tool_fields('swaplabel', ':', $fields[0]);