[pve-devel] Question to ZFSPlugin.pm

Alexandre DERUMIER aderumier at odiso.com
Thu Jan 22 08:17:59 CET 2015

This is strange,

the destroy vm code is

    # only remove disks owned by this VM
    foreach_drive($conf, sub {
        my ($ds, $drive) = @_;

        return if drive_is_cdrom($drive);

        my $volid = $drive->{file};

        return if !$volid || $volid =~ m|^/|;

        my ($path, $owner) = PVE::Storage::path($storecfg, $volid);
        return if !$path || !$owner || ($owner != $vmid);

        PVE::Storage::vdisk_free($storecfg, $volid);

    if ($keep_empty_config) {
        PVE::Tools::file_set_contents($conffile, "memory: 128\n");
    } else {
        unlink $conffile;

So,If PVE::Storage::vdisk_free is hanging (before the disk have clone), the config file shouldn't be delete

the vdisk_free code is

   $plugin->cluster_lock_storage($storeid, $scfg->{shared}, undef, sub {

        my ($vtype, $name, $vmid, undef, undef, $isBase) =
        if ($isBase) {
            my $vollist = $plugin->list_images($storeid, $scfg);
            foreach my $info (@$vollist) {
                my (undef, $tmpvolname) = parse_volume_id($info->{volid});
                my $basename = undef;
                my $basevmid = undef;

                    (undef, undef, undef, $basename, $basevmid) =

                if ($basename && defined($basevmid) && $basevmid == $vmid && $basename eq $name) {
                    die "base volume '$volname' is still in use " .
                        "(use by '$tmpvolname')\n";
        my $cleanup_worker = $plugin->free_image($storeid, $scfg, $volname, $isBase);

if volume isbase (this is the case of templates, the disk volid is base-xxxx), we check if we have clones.
(listing all volumes, and check if the volumes have the base image as parent)

----- Mail original -----
De: "Wolfgang Link" <w.link at proxmox.com>
À: "datanom.net" <mir at datanom.net>, "pve-devel" <pve-devel at pve.proxmox.com>
Envoyé: Mercredi 21 Janvier 2015 11:05:30
Objet: [pve-devel] Question to ZFSPlugin.pm

I implemented the ZFSPlugin for local Zfs use. 

When I test my adaption of this Plug-in, 
I recognize that it is possible to erase a template witch has a linked 

I mean the Zfs-volume will not destroyed but the config of the template. 

My problem is I can't validate, it on the orginal Plugin, because I have 
no iSCSI Nexenta/OmniOS. 

Has the ZFSPlugin the same behavior on iSCSI? 


pve-devel mailing list 
pve-devel at pve.proxmox.com 

More information about the pve-devel mailing list