[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