From 54028d7542cffe97c4685994baac66988c4b7db9 Mon Sep 17 00:00:00 2001 From: Luiz Capitulino Date: Fri, 7 Jun 2013 14:24:49 -0400 Subject: [PATCH 1/9] error: add error_setg_file_open() helper Signed-off-by: Luiz Capitulino Acked-by: Kevin Wolf --- include/qapi/error.h | 5 +++++ util/error.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/include/qapi/error.h b/include/qapi/error.h index 5cd2f0c30..ffd1cea47 100644 --- a/include/qapi/error.h +++ b/include/qapi/error.h @@ -44,6 +44,11 @@ void error_set_errno(Error **err, int os_error, ErrorClass err_class, const char #define error_setg_errno(err, os_error, fmt, ...) \ error_set_errno(err, os_error, ERROR_CLASS_GENERIC_ERROR, fmt, ## __VA_ARGS__) +/** + * Helper for open() errors + */ +void error_setg_file_open(Error **errp, int os_errno, const char *filename); + /** * Returns true if an indirect pointer to an error is pointing to a valid * error object. diff --git a/util/error.c b/util/error.c index 519f6b6ce..53b04354a 100644 --- a/util/error.c +++ b/util/error.c @@ -71,6 +71,11 @@ void error_set_errno(Error **errp, int os_errno, ErrorClass err_class, *errp = err; } +void error_setg_file_open(Error **errp, int os_errno, const char *filename) +{ + error_setg_errno(errp, os_errno, "Could not open '%s'", filename); +} + Error *error_copy(const Error *err) { Error *err_new; From bc5741add11113ee8febdcf33931ec3afe10c729 Mon Sep 17 00:00:00 2001 From: Luiz Capitulino Date: Fri, 7 Jun 2013 14:28:02 -0400 Subject: [PATCH 2/9] rng-random: use error_setg_file_open() Signed-off-by: Luiz Capitulino Acked-by: Kevin Wolf --- backends/rng-random.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/backends/rng-random.c b/backends/rng-random.c index 830360c78..68dfc8a9c 100644 --- a/backends/rng-random.c +++ b/backends/rng-random.c @@ -78,9 +78,8 @@ static void rng_random_opened(RngBackend *b, Error **errp) "filename", "a valid filename"); } else { s->fd = qemu_open(s->filename, O_RDONLY | O_NONBLOCK); - if (s->fd == -1) { - error_set(errp, QERR_OPEN_FILE_FAILED, s->filename); + error_setg_file_open(errp, errno, s->filename); } } } From dacc26aae5d291317a3277970a4f39a562939a78 Mon Sep 17 00:00:00 2001 From: Luiz Capitulino Date: Fri, 7 Jun 2013 14:31:46 -0400 Subject: [PATCH 3/9] block: mirror_complete(): use error_setg_file_open() Signed-off-by: Luiz Capitulino Reviewed-by: Stefan Hajnoczi Acked-by: Kevin Wolf --- block/mirror.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/block/mirror.c b/block/mirror.c index 8b07dec31..1ae724f70 100644 --- a/block/mirror.c +++ b/block/mirror.c @@ -512,7 +512,7 @@ static void mirror_complete(BlockJob *job, Error **errp) char backing_filename[PATH_MAX]; bdrv_get_full_backing_filename(s->target, backing_filename, sizeof(backing_filename)); - error_set(errp, QERR_OPEN_FILE_FAILED, backing_filename); + error_setg_file_open(errp, -ret, backing_filename); return; } if (!s->synced) { From 0eef407c7b4130d13138c1f75d9975165433f654 Mon Sep 17 00:00:00 2001 From: Luiz Capitulino Date: Fri, 7 Jun 2013 14:33:48 -0400 Subject: [PATCH 4/9] blockdev: use error_setg_file_open() Signed-off-by: Luiz Capitulino Reviewed-by: Stefan Hajnoczi Acked-by: Kevin Wolf --- blockdev.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/blockdev.c b/blockdev.c index 9937311aa..5975dde5d 100644 --- a/blockdev.c +++ b/blockdev.c @@ -899,7 +899,7 @@ static void external_snapshot_prepare(BlkTransactionStates *common, ret = bdrv_open(states->new_bs, new_image_file, NULL, flags | BDRV_O_NO_BACKING, drv); if (ret != 0) { - error_set(errp, QERR_OPEN_FILE_FAILED, new_image_file); + error_setg_file_open(errp, -ret, new_image_file); } } @@ -1062,8 +1062,11 @@ static void qmp_bdrv_open_encrypted(BlockDriverState *bs, const char *filename, int bdrv_flags, BlockDriver *drv, const char *password, Error **errp) { - if (bdrv_open(bs, filename, NULL, bdrv_flags, drv) < 0) { - error_set(errp, QERR_OPEN_FILE_FAILED, filename); + int ret; + + ret = bdrv_open(bs, filename, NULL, bdrv_flags, drv); + if (ret < 0) { + error_setg_file_open(errp, -ret, filename); return; } @@ -1483,7 +1486,7 @@ void qmp_drive_mirror(const char *device, const char *target, if (ret < 0) { bdrv_delete(target_bs); - error_set(errp, QERR_OPEN_FILE_FAILED, target); + error_setg_file_open(errp, -ret, target); return; } From 618da851ec8059460be8e0670bc835d3c2003708 Mon Sep 17 00:00:00 2001 From: Luiz Capitulino Date: Fri, 7 Jun 2013 14:35:06 -0400 Subject: [PATCH 5/9] cpus: use error_setg_file_open() Signed-off-by: Luiz Capitulino Acked-by: Kevin Wolf --- cpus.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cpus.c b/cpus.c index c232265cd..c8bc8ad8b 100644 --- a/cpus.c +++ b/cpus.c @@ -1278,7 +1278,7 @@ void qmp_memsave(int64_t addr, int64_t size, const char *filename, f = fopen(filename, "wb"); if (!f) { - error_set(errp, QERR_OPEN_FILE_FAILED, filename); + error_setg_file_open(errp, errno, filename); return; } @@ -1308,7 +1308,7 @@ void qmp_pmemsave(int64_t addr, int64_t size, const char *filename, f = fopen(filename, "wb"); if (!f) { - error_set(errp, QERR_OPEN_FILE_FAILED, filename); + error_setg_file_open(errp, errno, filename); return; } From 7581766b719afd63dcf922ddbf982291f596ed12 Mon Sep 17 00:00:00 2001 From: Luiz Capitulino Date: Fri, 7 Jun 2013 14:36:01 -0400 Subject: [PATCH 6/9] dump: qmp_dump_guest_memory(): use error_setg_file_open() Signed-off-by: Luiz Capitulino Acked-by: Kevin Wolf --- dump.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dump.c b/dump.c index 44a1339c8..c812cfaf2 100644 --- a/dump.c +++ b/dump.c @@ -853,7 +853,7 @@ void qmp_dump_guest_memory(bool paging, const char *file, bool has_begin, if (strstart(file, "file:", &p)) { fd = qemu_open(p, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, S_IRUSR); if (fd < 0) { - error_set(errp, QERR_OPEN_FILE_FAILED, p); + error_setg_file_open(errp, errno, p); return; } } From 1befce9652a1b7cfca0191b3031fae3cbce26ef0 Mon Sep 17 00:00:00 2001 From: Luiz Capitulino Date: Fri, 7 Jun 2013 14:36:58 -0400 Subject: [PATCH 7/9] savevm: qmp_xen_save_devices_state(): use error_setg_file_open() Signed-off-by: Luiz Capitulino Acked-by: Kevin Wolf --- savevm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/savevm.c b/savevm.c index 2ce439f7f..ff5ece651 100644 --- a/savevm.c +++ b/savevm.c @@ -2410,7 +2410,7 @@ void qmp_xen_save_devices_state(const char *filename, Error **errp) f = qemu_fopen(filename, "wb"); if (!f) { - error_set(errp, QERR_OPEN_FILE_FAILED, filename); + error_setg_file_open(errp, errno, filename); goto the_end; } ret = qemu_save_device_state(f); From d8b6895f7a8e5bcc5be1557e8048db43882f3b33 Mon Sep 17 00:00:00 2001 From: Luiz Capitulino Date: Mon, 10 Jun 2013 11:29:27 -0400 Subject: [PATCH 8/9] block: bdrv_reopen_prepare(): don't use QERR_OPEN_FILE_FAILED The call to drv->bdrv_reopen_prepare() can fail due to reasons other than an open failure. Unfortunately, we can't use errno nor -ret, cause they are not always set. Stick to a generic error message then. Signed-off-by: Luiz Capitulino Reviewed-by: Stefan Hajnoczi Acked-by: Kevin Wolf --- block.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/block.c b/block.c index 79ad33d0f..b88ad2fa0 100644 --- a/block.c +++ b/block.c @@ -1291,8 +1291,8 @@ int bdrv_reopen_prepare(BDRVReopenState *reopen_state, BlockReopenQueue *queue, if (local_err != NULL) { error_propagate(errp, local_err); } else { - error_set(errp, QERR_OPEN_FILE_FAILED, - reopen_state->bs->filename); + error_setg(errp, "failed while preparing to reopen image '%s'", + reopen_state->bs->filename); } goto error; } From dbfbc6373441e436ac6e2bcf7a8acb284225aa21 Mon Sep 17 00:00:00 2001 From: Luiz Capitulino Date: Fri, 7 Jun 2013 14:37:54 -0400 Subject: [PATCH 9/9] qerror: drop QERR_OPEN_FILE_FAILED macro Not used since the last commit. Signed-off-by: Luiz Capitulino Acked-by: Kevin Wolf --- include/qapi/qmp/qerror.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/include/qapi/qmp/qerror.h b/include/qapi/qmp/qerror.h index 6c0a18dfc..c30c2f6d7 100644 --- a/include/qapi/qmp/qerror.h +++ b/include/qapi/qmp/qerror.h @@ -177,9 +177,6 @@ void assert_no_error(Error *err); #define QERR_NOT_SUPPORTED \ ERROR_CLASS_GENERIC_ERROR, "Not supported" -#define QERR_OPEN_FILE_FAILED \ - ERROR_CLASS_GENERIC_ERROR, "Could not open '%s'" - #define QERR_PERMISSION_DENIED \ ERROR_CLASS_GENERIC_ERROR, "Insufficient permission to perform this operation"