|
|
619821 |
From 582eb6c9eef89809283e8d79b3f39e1ae9eeb64a Mon Sep 17 00:00:00 2001
|
|
|
619821 |
From: Jeffrey Cody <jcody@redhat.com>
|
|
|
619821 |
Date: Tue, 17 Jan 2017 19:51:30 +0100
|
|
|
619821 |
Subject: [PATCH 1/3] gluster: correctly propagate errors
|
|
|
619821 |
|
|
|
619821 |
RH-Author: Jeffrey Cody <jcody@redhat.com>
|
|
|
619821 |
Message-id: <9299039bbb1797e4e61cdc8b4be062efeb152abb.1484682588.git.jcody@redhat.com>
|
|
|
619821 |
Patchwork-id: 73254
|
|
|
619821 |
O-Subject: [RHEL-7.4 qemu-kvm 1/3] gluster: correctly propagate errors
|
|
|
619821 |
Bugzilla: 1151859
|
|
|
619821 |
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
|
|
|
619821 |
RH-Acked-by: Fam Zheng <famz@redhat.com>
|
|
|
619821 |
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
|
|
619821 |
|
|
|
619821 |
From: Paolo Bonzini <pbonzini@redhat.com>
|
|
|
619821 |
|
|
|
619821 |
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
|
619821 |
Reviewed-by: Fam Zheng <famz@redhat.com>
|
|
|
619821 |
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
|
|
619821 |
(cherry picked from commit a7451cb850d115f257080aff3fbc54f255ebf8f7)
|
|
|
619821 |
Signed-off-by: Jeff Cody <jcody@redhat.com>
|
|
|
619821 |
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
619821 |
---
|
|
|
619821 |
block/gluster.c | 29 +++++++++++++++--------------
|
|
|
619821 |
1 file changed, 15 insertions(+), 14 deletions(-)
|
|
|
619821 |
|
|
|
619821 |
diff --git a/block/gluster.c b/block/gluster.c
|
|
|
619821 |
index 1793386..248a031 100644
|
|
|
619821 |
--- a/block/gluster.c
|
|
|
619821 |
+++ b/block/gluster.c
|
|
|
619821 |
@@ -182,7 +182,8 @@ out:
|
|
|
619821 |
return ret;
|
|
|
619821 |
}
|
|
|
619821 |
|
|
|
619821 |
-static struct glfs *qemu_gluster_init(GlusterConf *gconf, const char *filename)
|
|
|
619821 |
+static struct glfs *qemu_gluster_init(GlusterConf *gconf, const char *filename,
|
|
|
619821 |
+ Error **errp)
|
|
|
619821 |
{
|
|
|
619821 |
struct glfs *glfs = NULL;
|
|
|
619821 |
int ret;
|
|
|
619821 |
@@ -190,8 +191,8 @@ static struct glfs *qemu_gluster_init(GlusterConf *gconf, const char *filename)
|
|
|
619821 |
|
|
|
619821 |
ret = qemu_gluster_parseuri(gconf, filename);
|
|
|
619821 |
if (ret < 0) {
|
|
|
619821 |
- error_report("Usage: file=gluster[+transport]://[server[:port]]/"
|
|
|
619821 |
- "volname/image[?socket=...]");
|
|
|
619821 |
+ error_setg(errp, "Usage: file=gluster[+transport]://[server[:port]]/"
|
|
|
619821 |
+ "volname/image[?socket=...]");
|
|
|
619821 |
errno = -ret;
|
|
|
619821 |
goto out;
|
|
|
619821 |
}
|
|
|
619821 |
@@ -218,9 +219,11 @@ static struct glfs *qemu_gluster_init(GlusterConf *gconf, const char *filename)
|
|
|
619821 |
|
|
|
619821 |
ret = glfs_init(glfs);
|
|
|
619821 |
if (ret) {
|
|
|
619821 |
- error_report("Gluster connection failed for server=%s port=%d "
|
|
|
619821 |
- "volume=%s image=%s transport=%s", gconf->server, gconf->port,
|
|
|
619821 |
- gconf->volname, gconf->image, gconf->transport);
|
|
|
619821 |
+ error_setg_errno(errp, errno,
|
|
|
619821 |
+ "Gluster connection failed for server=%s port=%d "
|
|
|
619821 |
+ "volume=%s image=%s transport=%s", gconf->server,
|
|
|
619821 |
+ gconf->port, gconf->volname, gconf->image,
|
|
|
619821 |
+ gconf->transport);
|
|
|
619821 |
goto out;
|
|
|
619821 |
}
|
|
|
619821 |
return glfs;
|
|
|
619821 |
@@ -328,17 +331,15 @@ static int qemu_gluster_open(BlockDriverState *bs, QDict *options,
|
|
|
619821 |
|
|
|
619821 |
opts = qemu_opts_create_nofail(&runtime_opts);
|
|
|
619821 |
qemu_opts_absorb_qdict(opts, options, &local_err);
|
|
|
619821 |
- if (error_is_set(&local_err)) {
|
|
|
619821 |
- qerror_report_err(local_err);
|
|
|
619821 |
- error_free(local_err);
|
|
|
619821 |
+ if (local_err) {
|
|
|
619821 |
+ error_propagate(errp, local_err);
|
|
|
619821 |
ret = -EINVAL;
|
|
|
619821 |
goto out;
|
|
|
619821 |
}
|
|
|
619821 |
|
|
|
619821 |
filename = qemu_opt_get(opts, "filename");
|
|
|
619821 |
|
|
|
619821 |
-
|
|
|
619821 |
- s->glfs = qemu_gluster_init(gconf, filename);
|
|
|
619821 |
+ s->glfs = qemu_gluster_init(gconf, filename, errp);
|
|
|
619821 |
if (!s->glfs) {
|
|
|
619821 |
ret = -errno;
|
|
|
619821 |
goto out;
|
|
|
619821 |
@@ -406,7 +407,7 @@ static int qemu_gluster_reopen_prepare(BDRVReopenState *state,
|
|
|
619821 |
|
|
|
619821 |
gconf = g_malloc0(sizeof(GlusterConf));
|
|
|
619821 |
|
|
|
619821 |
- reop_s->glfs = qemu_gluster_init(gconf, state->bs->filename);
|
|
|
619821 |
+ reop_s->glfs = qemu_gluster_init(gconf, state->bs->filename, errp);
|
|
|
619821 |
if (reop_s->glfs == NULL) {
|
|
|
619821 |
ret = -errno;
|
|
|
619821 |
goto exit;
|
|
|
619821 |
@@ -481,9 +482,9 @@ static int qemu_gluster_create(const char *filename,
|
|
|
619821 |
int64_t total_size = 0;
|
|
|
619821 |
GlusterConf *gconf = g_malloc0(sizeof(GlusterConf));
|
|
|
619821 |
|
|
|
619821 |
- glfs = qemu_gluster_init(gconf, filename);
|
|
|
619821 |
+ glfs = qemu_gluster_init(gconf, filename, errp);
|
|
|
619821 |
if (!glfs) {
|
|
|
619821 |
- ret = -errno;
|
|
|
619821 |
+ ret = -EINVAL;
|
|
|
619821 |
goto out;
|
|
|
619821 |
}
|
|
|
619821 |
|
|
|
619821 |
--
|
|
|
619821 |
1.8.3.1
|
|
|
619821 |
|