diff --git a/AUTHORS b/AUTHORS index 64276aaa99e4a8600d17db9a877ba3b63cdd9a23..7eaeb26d47ede3341b409dff93f6627f0f4ba577 100644 --- a/AUTHORS +++ b/AUTHORS @@ -247,6 +247,7 @@ Patches have also been contributed by: Viktor Mihajlovski Thang Pham Eiichi Tsukata + Sascha Peilicke [....send patches to get your name here....] diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c index 4894994649e80aa25cd77c20b5891d3e1be2c956..451841bd2930988f64b6f139ff5b0f9987d43cb0 100644 --- a/src/storage/storage_backend_fs.c +++ b/src/storage/storage_backend_fs.c @@ -1127,7 +1127,7 @@ virStorageBackendFileSystemVolBuildFrom(virConnectPtr conn, } /** - * Remove a volume - just unlinks for now + * Remove a volume - no support for BLOCK and NETWORK yet */ static int virStorageBackendFileSystemVolDelete(virConnectPtr conn ATTRIBUTE_UNUSED, @@ -1137,14 +1137,33 @@ virStorageBackendFileSystemVolDelete(virConnectPtr conn ATTRIBUTE_UNUSED, { virCheckFlags(0, -1); - if (unlink(vol->target.path) < 0) { - /* Silently ignore failures where the vol has already gone away */ - if (errno != ENOENT) { + switch (vol->type) { + case VIR_STORAGE_VOL_FILE: + if (unlink(vol->target.path) < 0) { + /* Silently ignore failures where the vol has already gone away */ + if (errno != ENOENT) { + virReportSystemError(errno, + _("cannot unlink file '%s'"), + vol->target.path); + return -1; + } + } + break; + case VIR_STORAGE_VOL_DIR: + if (rmdir(vol->target.path) < 0) { virReportSystemError(errno, - _("cannot unlink file '%s'"), + _("cannot remove directory '%s'"), vol->target.path); return -1; } + break; + case VIR_STORAGE_VOL_BLOCK: + case VIR_STORAGE_VOL_NETWORK: + default: + virStorageReportError(VIR_ERR_NO_SUPPORT, + _("removing block or network volumes is not supported: %s"), + vol->target.path); + return -1; } return 0; }