On 05/06/2014 07:39 AM, Stefan Hajnoczi wrote:
On Tue, Apr 01, 2014 at 02:34:58PM -0600, Chris Friesen wrote:
> When running qemu with something like this
>
> -device virtio-serial \
> -chardev socket,path=/tmp/foo,server,nowait,id=foo \
> -device virtserialport,chardev=foo,name=host.port.0
>
> the VM starts up as expected and creates a socket at /tmp/foo as expected.
>
> However, when I shut down the VM the socket at /tmp/foo is left
> behind in the filesystem. Basically qemu has "leaked" a file.
>
> With something like OpenStack where we could be creating/destroying
> many VMs this could end up creating a significant number of files in
> the specified directory.
>
> Has any thought been given to either automatically cleaning up the
> unix socket in the filesystem when qemu exits, or else supporting
> the abstract namespace for unix sockets to allow for automatic
> cleanup?
Libvirt has a special case for the monitor socket in its
qemuProcessStop() function.
Are you using the OpenStack libvirt driver?
Perhaps QEMU should support cleanup but first I think we should check
the situation with libvirt.
Yes, I am in fact using OpenStack/libvirt, and did eventually track down
libvirt as the code that was cleaning up the monitor socket.
Even so, I think this sort of change would be valid in qemu itself. qemu
created the files, so really it should be up to qemu to delete them when
it's done with them.
They're not usable for anything with qemu not running, so there's no
good reason to leave them laying around.
Chris