]> git.proxmox.com Git - pve-storage.git/blobdiff - PVE/Storage/LvmThinPlugin.pm
lvmthin: activate base volumes
[pve-storage.git] / PVE / Storage / LvmThinPlugin.pm
index 5c440324837758d32b49f9d0bc87bfe567148b9c..c834a2272f98a903f0748d90e256a5d93e152a93 100644 (file)
@@ -163,6 +163,20 @@ sub list_images {
     return $res;
 }
 
+sub list_thinpools {
+    my ($vg) = @_;
+
+    my $lvs = PVE::Storage::LVMPlugin::lvm_list_volumes($vg);
+    my $thinpools = [];
+
+    foreach my $lvname (keys %{$lvs->{$vg}}) {
+       next if $lvs->{$vg}->{$lvname}->{lv_type} ne 't';
+       push @$thinpools, { lv => $lvname };
+    }
+
+    return $thinpools;
+}
+
 sub status {
     my ($class, $storeid, $scfg, $cache) = @_;
 
@@ -195,6 +209,9 @@ sub activate_volume {
        my $snapvol = "snap_${volname}_$snapname";
        my $cmd = ['/sbin/lvchange', '-ay', '-K', "$vg/$snapvol"];
        run_command($cmd, errmsg => "activate_volume '$vg/$snapvol' error");
+    } elsif ($volname =~ /^base-/) {
+       my $cmd = ['/sbin/lvchange', '-ay', '-K', "$vg/$volname"];
+       run_command($cmd, errmsg => "activate_volume '$vg/$volname' error");
     } else {
        # other volumes are active by default
     }
@@ -210,6 +227,9 @@ sub deactivate_volume {
        my $snapvol = "snap_${volname}_$snapname";
        my $cmd = ['/sbin/lvchange', '-an', "$vg/$snapvol"];
        run_command($cmd, errmsg => "deactivate_volume '$vg/$snapvol' error");
+    } elsif ($volname =~ /^base-/) {
+       my $cmd = ['/sbin/lvchange', '-an', "$vg/$volname"];
+       run_command($cmd, errmsg => "deactivate_volume '$vg/$volname' error");
     } else {
        # other volumes are kept active
     }
@@ -322,6 +342,7 @@ sub volume_has_feature {
        clone => { base => 1, snap => 1},
        template => { current => 1},
        copy => { base => 1, current => 1, snap => 1},
+       sparseinit => { base => 1, current => 1},
     };
 
     my ($vtype, $name, $vmid, $basename, $basevmid, $isBase) =