--- src/launch-direct.c | 49 +++++++++++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/src/launch-direct.c b/src/launch-direct.c index 3d478c7..0f6e2fc 100644 --- a/src/launch-direct.c +++ b/src/launch-direct.c @@ -1417,46 +1417,43 @@ guestfs___discard_possible (guestfs_h *g, struct drive *drv, */ bool qemu16 = qemu_version >= 1006000; - if (!qemu15) { - error (g, _("discard cannot be enabled on this drive: " - "qemu < 1.5")); - return false; - } + if (!qemu15) + NOT_SUPPORTED (g, false, + _("discard cannot be enabled on this drive: " + "qemu < 1.5")); /* If it's an overlay, discard is not possible (on the underlying * file). This has probably been caught earlier since we already * checked that the drive is !readonly. Nevertheless ... */ - if (drv->overlay) { - error (g, _("discard cannot be enabled on this drive: " - "the drive has a read-only overlay")); - return false; - } + if (drv->overlay) + NOT_SUPPORTED (g, false, + _("discard cannot be enabled on this drive: " + "the drive has a read-only overlay")); /* Look at the source format. */ if (drv->src.format == NULL) { /* We could autodetect the format, but we don't ... yet. XXX */ - error (g, _("discard cannot be enabled on this drive: " - "you have to specify the format of the file")); - return false; + NOT_SUPPORTED (g, false, + _("discard cannot be enabled on this drive: " + "you have to specify the format of the file")); } else if (STREQ (drv->src.format, "raw")) /* OK */ ; else if (STREQ (drv->src.format, "qcow2")) { - if (!qemu16) { - error (g, _("discard cannot be enabled on this drive: " - "qemu < 1.6 cannot do discard on qcow2 files")); - return false; - } + if (!qemu16) + NOT_SUPPORTED (g, false, + _("discard cannot be enabled on this drive: " + "qemu < 1.6 cannot do discard on qcow2 files")); } else { /* It's possible in future other formats will support discard, but * currently (qemu 1.7) none of them do. */ - error (g, _("discard cannot be enabled on this drive: " - "qemu does not support discard for '%s' format files"), - drv->src.format); - return false; + NOT_SUPPORTED (g, false, + _("discard cannot be enabled on this drive: " + "qemu does not support discard for '%s' format files"), + drv->src.format); } switch (drv->src.protocol) { @@ -1476,10 +1473,10 @@ guestfs___discard_possible (guestfs_h *g, struct drive *drv, case drive_protocol_https: case drive_protocol_ssh: case drive_protocol_tftp: - error (g, _("discard cannot be enabled on this drive: " - "protocol '%s' does not support discard"), - guestfs___drive_protocol_to_string (drv->src.protocol)); - return false; + NOT_SUPPORTED (g, -1, + _("discard cannot be enabled on this drive: " + "protocol '%s' does not support discard"), + guestfs___drive_protocol_to_string (drv->src.protocol)); } return true; -- 1.8.5.3