From: Marek Marczykowski-Górecki Date: Sun, 8 Nov 2020 14:59:42 +0000 (+0100) Subject: libxl: cleanup remaining backend xs dirs after driver domain X-Git-Tag: 4.15.0-rc1~343 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=c992efd06a4c092f6fb3b8ab10d4f8ca35d42bbd;p=people%2Fjgross%2Fxen.git libxl: cleanup remaining backend xs dirs after driver domain When device is removed, backend domain (which may be a driver domain) is responsible for removing backend entries from xenstore. But in case of driver domain, it has no access to remove all of them - specifically the directory named after frontend-id remains. This may accumulate enough to exceed xenstore quote of the driver domain, breaking further devices. Fix this by calling libxl__xs_path_cleanup() on the backend path from libxl__device_destroy() in the toolstack domain too. Note libxl__device_destroy() is called when the driver domain already removed what it can (see device_destroy_be_watch_cb()->device_hotplug_done()). Signed-off-by: Marek Marczykowski-Górecki Acked-by: Wei Liu --- diff --git a/tools/libs/light/libxl_device.c b/tools/libs/light/libxl_device.c index ac173a043d..36c4e41e4d 100644 --- a/tools/libs/light/libxl_device.c +++ b/tools/libs/light/libxl_device.c @@ -763,6 +763,12 @@ int libxl__device_destroy(libxl__gc *gc, libxl__device *dev) * from the backend path. */ libxl__xs_path_cleanup(gc, t, be_path); + } else if (domid == LIBXL_TOOLSTACK_DOMID && !libxl_only) { + /* + * Then, toolstack domain is in charge of removing the parent + * directory if empty already. + */ + libxl__xs_path_cleanup(gc, t, be_path); } rc = libxl__xs_transaction_commit(gc, &t);