Specifying an unsupported disk format with the tap driver resulted in
a less than helpful error message
error: Failed to start domain test-hvm
error: internal error libxenlight does not support disk driver qed
Change the message to state that the qed format is not supported by
the tap driver, e.g.
error: Failed to start domain test-hvm
error: internal error libxenlight does not support disk format qed
with disk driver tap
While at it, check for unsupported formats in the other driver
backends.
---
V2: Fix logic errors when validating disk format
src/libxl/libxl_conf.c | 24 ++++++++++++++++++++++--
1 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
index 1be66da..a47204e 100644
--- a/src/libxl/libxl_conf.c
+++ b/src/libxl/libxl_conf.c
@@ -484,14 +484,34 @@ libxlMakeDisk(virDomainDiskDefPtr l_disk, libxl_device_disk
*x_disk)
break;
default:
virReportError(VIR_ERR_INTERNAL_ERROR,
- _("libxenlight does not support disk driver
%s"),
- virStorageFileFormatTypeToString(l_disk->format));
+ _("libxenlight does not support disk format %s
"
+ "with disk driver %s"),
+ virStorageFileFormatTypeToString(l_disk->format),
+ l_disk->driverName);
return -1;
}
} else if (STREQ(l_disk->driverName, "file")) {
+ if (l_disk->format != VIR_STORAGE_FILE_NONE &&
+ l_disk->format != VIR_STORAGE_FILE_RAW) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("libxenlight does not support disk format %s
"
+ "with disk driver %s"),
+ virStorageFileFormatTypeToString(l_disk->format),
+ l_disk->driverName);
+ return -1;
+ }
x_disk->format = LIBXL_DISK_FORMAT_RAW;
x_disk->backend = LIBXL_DISK_BACKEND_TAP;
} else if (STREQ(l_disk->driverName, "phy")) {
+ if (l_disk->format != VIR_STORAGE_FILE_NONE &&
+ l_disk->format != VIR_STORAGE_FILE_RAW) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("libxenlight does not support disk format %s
"
+ "with disk driver %s"),
+ virStorageFileFormatTypeToString(l_disk->format),
+ l_disk->driverName);
+ return -1;
+ }
x_disk->format = LIBXL_DISK_FORMAT_RAW;
x_disk->backend = LIBXL_DISK_BACKEND_PHY;
} else {
--
1.7.7