mirror of https://github.com/xqemu/xqemu.git
gluster: correctly propagate errors
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
24897a767b
commit
a7451cb850
|
@ -175,7 +175,8 @@ out:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct glfs *qemu_gluster_init(GlusterConf *gconf, const char *filename)
|
static struct glfs *qemu_gluster_init(GlusterConf *gconf, const char *filename,
|
||||||
|
Error **errp)
|
||||||
{
|
{
|
||||||
struct glfs *glfs = NULL;
|
struct glfs *glfs = NULL;
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -183,8 +184,8 @@ static struct glfs *qemu_gluster_init(GlusterConf *gconf, const char *filename)
|
||||||
|
|
||||||
ret = qemu_gluster_parseuri(gconf, filename);
|
ret = qemu_gluster_parseuri(gconf, filename);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
error_report("Usage: file=gluster[+transport]://[server[:port]]/"
|
error_setg(errp, "Usage: file=gluster[+transport]://[server[:port]]/"
|
||||||
"volname/image[?socket=...]");
|
"volname/image[?socket=...]");
|
||||||
errno = -ret;
|
errno = -ret;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
@ -211,9 +212,11 @@ static struct glfs *qemu_gluster_init(GlusterConf *gconf, const char *filename)
|
||||||
|
|
||||||
ret = glfs_init(glfs);
|
ret = glfs_init(glfs);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
error_report("Gluster connection failed for server=%s port=%d "
|
error_setg_errno(errp, errno,
|
||||||
"volume=%s image=%s transport=%s", gconf->server, gconf->port,
|
"Gluster connection failed for server=%s port=%d "
|
||||||
gconf->volname, gconf->image, gconf->transport);
|
"volume=%s image=%s transport=%s", gconf->server,
|
||||||
|
gconf->port, gconf->volname, gconf->image,
|
||||||
|
gconf->transport);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
return glfs;
|
return glfs;
|
||||||
|
@ -283,15 +286,14 @@ static int qemu_gluster_open(BlockDriverState *bs, QDict *options,
|
||||||
opts = qemu_opts_create(&runtime_opts, NULL, 0, &error_abort);
|
opts = qemu_opts_create(&runtime_opts, NULL, 0, &error_abort);
|
||||||
qemu_opts_absorb_qdict(opts, options, &local_err);
|
qemu_opts_absorb_qdict(opts, options, &local_err);
|
||||||
if (local_err) {
|
if (local_err) {
|
||||||
qerror_report_err(local_err);
|
error_propagate(errp, local_err);
|
||||||
error_free(local_err);
|
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
filename = qemu_opt_get(opts, "filename");
|
filename = qemu_opt_get(opts, "filename");
|
||||||
|
|
||||||
s->glfs = qemu_gluster_init(gconf, filename);
|
s->glfs = qemu_gluster_init(gconf, filename, errp);
|
||||||
if (!s->glfs) {
|
if (!s->glfs) {
|
||||||
ret = -errno;
|
ret = -errno;
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -389,9 +391,9 @@ static int qemu_gluster_create(const char *filename,
|
||||||
int64_t total_size = 0;
|
int64_t total_size = 0;
|
||||||
GlusterConf *gconf = g_malloc0(sizeof(GlusterConf));
|
GlusterConf *gconf = g_malloc0(sizeof(GlusterConf));
|
||||||
|
|
||||||
glfs = qemu_gluster_init(gconf, filename);
|
glfs = qemu_gluster_init(gconf, filename, errp);
|
||||||
if (!glfs) {
|
if (!glfs) {
|
||||||
ret = -errno;
|
ret = -EINVAL;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue