[pve-devel] [PATCH #1941 qemu-server] Clean up empty image subdirectories on dir based storage on VM destruction

Christian Ebner c.ebner at proxmox.com
Thu Jan 17 17:10:43 CET 2019


No, I had no special reason to put it there, I was just looking for the seemingly easiest place to clean up the directory.

I will implement it for the Dir plugin if this is more suitable!

Thx
> On January 17, 2019 at 4:56 PM Thomas Lamprecht <t.lamprecht at proxmox.com> wrote:
> 
> 
> On 1/17/19 12:13 PM, Christian Ebner wrote:
> > Fix #1941
> 
> It's a bit of an untold convention in PVE to put above in the beginning of
> the commit messages subject line, makes it easier for some of us to copy the
> line for the package changelog.
> 
> > 
> > Removes the empty vmid subdirectories when a VM gets destroyed and all the
> > contained image files are deleted.
> 
> Hmm, any reason that you do not do this in pve-storage?
> Without thinking to much it seems to me that this is not the job of qemu-server,
> it shouldn't care about such details, it only wants to free an image?
> Or did you have specific reasons to put it here?
> 
> Else, maybe you could integrate something like this in the Dir plugin, which
> in this case means the base Plugin class DirPlug bases on, as it inherits the
> free_image method.
> 
> > 
> > Signed-off-by: Christian Ebner <c.ebner at proxmox.com>
> > ---
> >  PVE/QemuServer.pm | 8 ++++++++
> >  1 file changed, 8 insertions(+)
> > 
> > diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
> > index 1ccdccf..da4be85 100644
> > --- a/PVE/QemuServer.pm
> > +++ b/PVE/QemuServer.pm
> > @@ -2502,6 +2502,8 @@ sub destroy_vm {
> >   	return if drive_is_cdrom($drive, 1);
> >  
> >  	my $volid = $drive->{file};
> > +	my $storeid = PVE::Storage::parse_volume_id($volid);
> > +	my $storetype = $storecfg->{ids}->{$storeid}->{type};
> >  
> >  	return if !$volid || $volid =~ m|^/|;
> >  
> > @@ -2513,6 +2515,12 @@ sub destroy_vm {
> >  	};
> >  	warn "Could not remove disk '$volid', check manually: $@" if $@;
> >  
> > +	# cleanup empty directroies on dir based storage
> > +	if ($storetype eq 'dir') {
> > +	    my $dir = dirname($path);
> > +	    rmdir($dir);
> > +	}
> > +
> >      });
> >  
> >      if ($keep_empty_config) {
> > 
>




More information about the pve-devel mailing list