|
@@ -30,7 +30,7 @@ static FsDriverTable FsDrivers[] = {
|
|
{ .name = "proxy", .ops = &proxy_ops},
|
|
{ .name = "proxy", .ops = &proxy_ops},
|
|
};
|
|
};
|
|
|
|
|
|
-int qemu_fsdev_add(QemuOpts *opts)
|
|
|
|
|
|
+int qemu_fsdev_add(QemuOpts *opts, Error **errp)
|
|
{
|
|
{
|
|
int i;
|
|
int i;
|
|
struct FsDriverListEntry *fsle;
|
|
struct FsDriverListEntry *fsle;
|
|
@@ -38,10 +38,9 @@ int qemu_fsdev_add(QemuOpts *opts)
|
|
const char *fsdriver = qemu_opt_get(opts, "fsdriver");
|
|
const char *fsdriver = qemu_opt_get(opts, "fsdriver");
|
|
const char *writeout = qemu_opt_get(opts, "writeout");
|
|
const char *writeout = qemu_opt_get(opts, "writeout");
|
|
bool ro = qemu_opt_get_bool(opts, "readonly", 0);
|
|
bool ro = qemu_opt_get_bool(opts, "readonly", 0);
|
|
- Error *local_err = NULL;
|
|
|
|
|
|
|
|
if (!fsdev_id) {
|
|
if (!fsdev_id) {
|
|
- error_report("fsdev: No id specified");
|
|
|
|
|
|
+ error_setg(errp, "fsdev: No id specified");
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -53,11 +52,11 @@ int qemu_fsdev_add(QemuOpts *opts)
|
|
}
|
|
}
|
|
|
|
|
|
if (i == ARRAY_SIZE(FsDrivers)) {
|
|
if (i == ARRAY_SIZE(FsDrivers)) {
|
|
- error_report("fsdev: fsdriver %s not found", fsdriver);
|
|
|
|
|
|
+ error_setg(errp, "fsdev: fsdriver %s not found", fsdriver);
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- error_report("fsdev: No fsdriver specified");
|
|
|
|
|
|
+ error_setg(errp, "fsdev: No fsdriver specified");
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -76,8 +75,7 @@ int qemu_fsdev_add(QemuOpts *opts)
|
|
}
|
|
}
|
|
|
|
|
|
if (fsle->fse.ops->parse_opts) {
|
|
if (fsle->fse.ops->parse_opts) {
|
|
- if (fsle->fse.ops->parse_opts(opts, &fsle->fse, &local_err)) {
|
|
|
|
- error_report_err(local_err);
|
|
|
|
|
|
+ if (fsle->fse.ops->parse_opts(opts, &fsle->fse, errp)) {
|
|
g_free(fsle->fse.fsdev_id);
|
|
g_free(fsle->fse.fsdev_id);
|
|
g_free(fsle);
|
|
g_free(fsle);
|
|
return -1;
|
|
return -1;
|