提交 3b7399b5 编写于 作者: D Daniel P. Berrange

Replace use of qemuReportError with virReportError

Update the QEMU driver to use virReportError instead of
the qemuReportError custom macro
Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
上级 4e532f2e
...@@ -517,7 +517,6 @@ msg_gen_function += lxcError ...@@ -517,7 +517,6 @@ msg_gen_function += lxcError
msg_gen_function += libxlError msg_gen_function += libxlError
msg_gen_function += nodeReportError msg_gen_function += nodeReportError
msg_gen_function += openvzError msg_gen_function += openvzError
msg_gen_function += qemuReportError
msg_gen_function += regerror msg_gen_function += regerror
msg_gen_function += remoteError msg_gen_function += remoteError
msg_gen_function += statsError msg_gen_function += statsError
......
...@@ -204,22 +204,22 @@ qemuAgentOpenUnix(const char *monitor, pid_t cpid, bool *inProgress) ...@@ -204,22 +204,22 @@ qemuAgentOpenUnix(const char *monitor, pid_t cpid, bool *inProgress)
} }
if (virSetNonBlock(monfd) < 0) { if (virSetNonBlock(monfd) < 0) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("Unable to put monitor into non-blocking mode")); "%s", _("Unable to put monitor into non-blocking mode"));
goto error; goto error;
} }
if (virSetCloseExec(monfd) < 0) { if (virSetCloseExec(monfd) < 0) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("Unable to set monitor close-on-exec flag")); "%s", _("Unable to set monitor close-on-exec flag"));
goto error; goto error;
} }
memset(&addr, 0, sizeof(addr)); memset(&addr, 0, sizeof(addr));
addr.sun_family = AF_UNIX; addr.sun_family = AF_UNIX;
if (virStrcpyStatic(addr.sun_path, monitor) == NULL) { if (virStrcpyStatic(addr.sun_path, monitor) == NULL) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Agent path %s too big for destination"), monitor); _("Agent path %s too big for destination"), monitor);
goto error; goto error;
} }
...@@ -269,14 +269,14 @@ qemuAgentOpenPty(const char *monitor) ...@@ -269,14 +269,14 @@ qemuAgentOpenPty(const char *monitor)
int monfd; int monfd;
if ((monfd = open(monitor, O_RDWR | O_NONBLOCK)) < 0) { if ((monfd = open(monitor, O_RDWR | O_NONBLOCK)) < 0) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Unable to open monitor path %s"), monitor); _("Unable to open monitor path %s"), monitor);
return -1; return -1;
} }
if (virSetCloseExec(monfd) < 0) { if (virSetCloseExec(monfd) < 0) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("Unable to set monitor close-on-exec flag")); "%s", _("Unable to set monitor close-on-exec flag"));
goto error; goto error;
} }
...@@ -331,8 +331,8 @@ qemuAgentIOProcessLine(qemuAgentPtr mon, ...@@ -331,8 +331,8 @@ qemuAgentIOProcessLine(qemuAgentPtr mon,
goto cleanup; goto cleanup;
if (obj->type != VIR_JSON_TYPE_OBJECT) { if (obj->type != VIR_JSON_TYPE_OBJECT) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Parsed JSON reply '%s' isn't an object"), line); _("Parsed JSON reply '%s' isn't an object"), line);
goto cleanup; goto cleanup;
} }
...@@ -362,12 +362,12 @@ qemuAgentIOProcessLine(qemuAgentPtr mon, ...@@ -362,12 +362,12 @@ qemuAgentIOProcessLine(qemuAgentPtr mon,
goto cleanup; goto cleanup;
} }
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Unexpected JSON reply '%s'"), line); _("Unexpected JSON reply '%s'"), line);
} }
} else { } else {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Unknown JSON reply '%s'"), line); _("Unknown JSON reply '%s'"), line);
} }
cleanup: cleanup:
...@@ -609,9 +609,9 @@ qemuAgentIO(int watch, int fd, int events, void *opaque) { ...@@ -609,9 +609,9 @@ qemuAgentIO(int watch, int fd, int events, void *opaque) {
if (mon->fd != fd || mon->watch != watch) { if (mon->fd != fd || mon->watch != watch) {
if (events & (VIR_EVENT_HANDLE_HANGUP | VIR_EVENT_HANDLE_ERROR)) if (events & (VIR_EVENT_HANDLE_HANGUP | VIR_EVENT_HANDLE_ERROR))
eof = true; eof = true;
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("event from unexpected fd %d!=%d / watch %d!=%d"), _("event from unexpected fd %d!=%d / watch %d!=%d"),
mon->fd, fd, mon->watch, watch); mon->fd, fd, mon->watch, watch);
error = true; error = true;
} else if (mon->lastError.code != VIR_ERR_OK) { } else if (mon->lastError.code != VIR_ERR_OK) {
if (events & (VIR_EVENT_HANDLE_HANGUP | VIR_EVENT_HANDLE_ERROR)) if (events & (VIR_EVENT_HANDLE_HANGUP | VIR_EVENT_HANDLE_ERROR))
...@@ -649,23 +649,23 @@ qemuAgentIO(int watch, int fd, int events, void *opaque) { ...@@ -649,23 +649,23 @@ qemuAgentIO(int watch, int fd, int events, void *opaque) {
if (!error && if (!error &&
events & VIR_EVENT_HANDLE_HANGUP) { events & VIR_EVENT_HANDLE_HANGUP) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("End of file from monitor")); _("End of file from monitor"));
eof = 1; eof = 1;
events &= ~VIR_EVENT_HANDLE_HANGUP; events &= ~VIR_EVENT_HANDLE_HANGUP;
} }
if (!error && !eof && if (!error && !eof &&
events & VIR_EVENT_HANDLE_ERROR) { events & VIR_EVENT_HANDLE_ERROR) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Invalid file descriptor while waiting for monitor")); _("Invalid file descriptor while waiting for monitor"));
eof = 1; eof = 1;
events &= ~VIR_EVENT_HANDLE_ERROR; events &= ~VIR_EVENT_HANDLE_ERROR;
} }
if (!error && events) { if (!error && events) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Unhandled event %d for monitor fd %d"), _("Unhandled event %d for monitor fd %d"),
events, mon->fd); events, mon->fd);
error = 1; error = 1;
} }
} }
...@@ -677,8 +677,8 @@ qemuAgentIO(int watch, int fd, int events, void *opaque) { ...@@ -677,8 +677,8 @@ qemuAgentIO(int watch, int fd, int events, void *opaque) {
} else { } else {
virErrorPtr err = virGetLastError(); virErrorPtr err = virGetLastError();
if (!err) if (!err)
qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Error while processing monitor IO")); _("Error while processing monitor IO"));
virCopyLastError(&mon->lastError); virCopyLastError(&mon->lastError);
virResetLastError(); virResetLastError();
} }
...@@ -734,8 +734,8 @@ qemuAgentOpen(virDomainObjPtr vm, ...@@ -734,8 +734,8 @@ qemuAgentOpen(virDomainObjPtr vm,
qemuAgentPtr mon; qemuAgentPtr mon;
if (!cb || !cb->eofNotify) { if (!cb || !cb->eofNotify) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("EOF notify callback must be supplied")); _("EOF notify callback must be supplied"));
return NULL; return NULL;
} }
...@@ -745,14 +745,14 @@ qemuAgentOpen(virDomainObjPtr vm, ...@@ -745,14 +745,14 @@ qemuAgentOpen(virDomainObjPtr vm,
} }
if (virMutexInit(&mon->lock) < 0) { if (virMutexInit(&mon->lock) < 0) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("cannot initialize monitor mutex")); _("cannot initialize monitor mutex"));
VIR_FREE(mon); VIR_FREE(mon);
return NULL; return NULL;
} }
if (virCondInit(&mon->notify) < 0) { if (virCondInit(&mon->notify) < 0) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("cannot initialize monitor condition")); _("cannot initialize monitor condition"));
virMutexDestroy(&mon->lock); virMutexDestroy(&mon->lock);
VIR_FREE(mon); VIR_FREE(mon);
return NULL; return NULL;
...@@ -774,9 +774,9 @@ qemuAgentOpen(virDomainObjPtr vm, ...@@ -774,9 +774,9 @@ qemuAgentOpen(virDomainObjPtr vm,
break; break;
default: default:
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("unable to handle monitor type: %s"), _("unable to handle monitor type: %s"),
virDomainChrTypeToString(config->type)); virDomainChrTypeToString(config->type));
goto cleanup; goto cleanup;
} }
...@@ -792,8 +792,8 @@ qemuAgentOpen(virDomainObjPtr vm, ...@@ -792,8 +792,8 @@ qemuAgentOpen(virDomainObjPtr vm,
0), 0),
qemuAgentIO, qemuAgentIO,
mon, qemuAgentUnwatch)) < 0) { mon, qemuAgentUnwatch)) < 0) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("unable to register monitor events")); _("unable to register monitor events"));
goto cleanup; goto cleanup;
} }
qemuAgentRef(mon); qemuAgentRef(mon);
...@@ -886,12 +886,12 @@ static int qemuAgentSend(qemuAgentPtr mon, ...@@ -886,12 +886,12 @@ static int qemuAgentSend(qemuAgentPtr mon,
if ((timeout && virCondWaitUntil(&mon->notify, &mon->lock, then) < 0) || if ((timeout && virCondWaitUntil(&mon->notify, &mon->lock, then) < 0) ||
(!timeout && virCondWait(&mon->notify, &mon->lock) < 0)) { (!timeout && virCondWait(&mon->notify, &mon->lock) < 0)) {
if (errno == ETIMEDOUT) { if (errno == ETIMEDOUT) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Guest agent not available for now")); _("Guest agent not available for now"));
ret = -2; ret = -2;
} else { } else {
qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Unable to wait on monitor condition")); _("Unable to wait on monitor condition"));
} }
goto cleanup; goto cleanup;
} }
...@@ -959,23 +959,23 @@ qemuAgentGuestSync(qemuAgentPtr mon) ...@@ -959,23 +959,23 @@ qemuAgentGuestSync(qemuAgentPtr mon)
} }
if (!sync_msg.rxObject) { if (!sync_msg.rxObject) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Missing monitor reply object")); _("Missing monitor reply object"));
goto cleanup; goto cleanup;
} }
if (virJSONValueObjectGetNumberUlong(sync_msg.rxObject, if (virJSONValueObjectGetNumberUlong(sync_msg.rxObject,
"return", &id_ret) < 0) { "return", &id_ret) < 0) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Malformed return value")); _("Malformed return value"));
goto cleanup; goto cleanup;
} }
VIR_DEBUG("Guest returned ID: %llu", id_ret); VIR_DEBUG("Guest returned ID: %llu", id_ret);
if (id_ret != id) { if (id_ret != id) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Guest agent returned ID: %llu instead of %llu"), _("Guest agent returned ID: %llu instead of %llu"),
id_ret, id); id_ret, id);
goto cleanup; goto cleanup;
} }
ret = 0; ret = 0;
...@@ -1029,8 +1029,8 @@ qemuAgentCommand(qemuAgentPtr mon, ...@@ -1029,8 +1029,8 @@ qemuAgentCommand(qemuAgentPtr mon,
if (await_event) { if (await_event) {
VIR_DEBUG("Woken up by event %d", await_event); VIR_DEBUG("Woken up by event %d", await_event);
} else { } else {
qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Missing monitor reply object")); _("Missing monitor reply object"));
ret = -1; ret = -1;
} }
} else { } else {
...@@ -1128,14 +1128,14 @@ qemuAgentCheckError(virJSONValuePtr cmd, ...@@ -1128,14 +1128,14 @@ qemuAgentCheckError(virJSONValuePtr cmd,
/* Only send the user the command name + friendly error */ /* Only send the user the command name + friendly error */
if (!error) if (!error)
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("unable to execute QEMU command '%s'"), _("unable to execute QEMU command '%s'"),
qemuAgentCommandName(cmd)); qemuAgentCommandName(cmd));
else else
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("unable to execute QEMU command '%s': %s"), _("unable to execute QEMU command '%s': %s"),
qemuAgentCommandName(cmd), qemuAgentCommandName(cmd),
qemuAgentStringifyError(error)); qemuAgentStringifyError(error));
VIR_FREE(cmdstr); VIR_FREE(cmdstr);
VIR_FREE(replystr); VIR_FREE(replystr);
...@@ -1146,9 +1146,9 @@ qemuAgentCheckError(virJSONValuePtr cmd, ...@@ -1146,9 +1146,9 @@ qemuAgentCheckError(virJSONValuePtr cmd,
VIR_DEBUG("Neither 'return' nor 'error' is set in the JSON reply %s: %s", VIR_DEBUG("Neither 'return' nor 'error' is set in the JSON reply %s: %s",
cmdstr, replystr); cmdstr, replystr);
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("unable to execute QEMU command '%s'"), _("unable to execute QEMU command '%s'"),
qemuAgentCommandName(cmd)); qemuAgentCommandName(cmd));
VIR_FREE(cmdstr); VIR_FREE(cmdstr);
VIR_FREE(replystr); VIR_FREE(replystr);
return -1; return -1;
...@@ -1178,9 +1178,9 @@ qemuAgentMakeCommand(const char *cmdname, ...@@ -1178,9 +1178,9 @@ qemuAgentMakeCommand(const char *cmdname,
char type; char type;
if (strlen(key) < 3) { if (strlen(key) < 3) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("argument key '%s' is too short, missing type prefix"), _("argument key '%s' is too short, missing type prefix"),
key); key);
goto error; goto error;
} }
...@@ -1232,8 +1232,8 @@ qemuAgentMakeCommand(const char *cmdname, ...@@ -1232,8 +1232,8 @@ qemuAgentMakeCommand(const char *cmdname,
ret = virJSONValueObjectAppendNull(jargs, key); ret = virJSONValueObjectAppendNull(jargs, key);
} break; } break;
default: default:
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("unsupported data type '%c' for arg '%s'"), type, key - 2); _("unsupported data type '%c' for arg '%s'"), type, key - 2);
goto error; goto error;
} }
if (ret < 0) if (ret < 0)
...@@ -1332,8 +1332,8 @@ int qemuAgentFSFreeze(qemuAgentPtr mon) ...@@ -1332,8 +1332,8 @@ int qemuAgentFSFreeze(qemuAgentPtr mon)
goto cleanup; goto cleanup;
if (virJSONValueObjectGetNumberInt(reply, "return", &ret) < 0) { if (virJSONValueObjectGetNumberInt(reply, "return", &ret) < 0) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("malformed return value")); _("malformed return value"));
} }
cleanup: cleanup:
...@@ -1369,8 +1369,8 @@ int qemuAgentFSThaw(qemuAgentPtr mon) ...@@ -1369,8 +1369,8 @@ int qemuAgentFSThaw(qemuAgentPtr mon)
goto cleanup; goto cleanup;
if (virJSONValueObjectGetNumberInt(reply, "return", &ret) < 0) { if (virJSONValueObjectGetNumberInt(reply, "return", &ret) < 0) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("malformed return value")); _("malformed return value"));
} }
cleanup: cleanup:
......
...@@ -1226,9 +1226,9 @@ qemuCapsComputeCmdFlags(const char *help, ...@@ -1226,9 +1226,9 @@ qemuCapsComputeCmdFlags(const char *help,
if (version >= 15000 || if (version >= 15000 ||
(version >= 12000 && strstr(help, "libvirt"))) { (version >= 12000 && strstr(help, "libvirt"))) {
if (check_yajl) { if (check_yajl) {
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("this qemu binary requires libvirt to be " _("this qemu binary requires libvirt to be "
"compiled with yajl")); "compiled with yajl"));
return -1; return -1;
} }
qemuCapsSet(flags, QEMU_CAPS_NETDEV); qemuCapsSet(flags, QEMU_CAPS_NETDEV);
...@@ -1363,9 +1363,9 @@ fail: ...@@ -1363,9 +1363,9 @@ fail:
if (!p) if (!p)
p = strchr(help, '\0'); p = strchr(help, '\0');
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("cannot parse %s version number in '%.*s'"), _("cannot parse %s version number in '%.*s'"),
qemu, (int) (p - help), help); qemu, (int) (p - help), help);
cleanup: cleanup:
return -1; return -1;
...@@ -1589,8 +1589,8 @@ int qemuCapsExtractVersion(virCapsPtr caps, ...@@ -1589,8 +1589,8 @@ int qemuCapsExtractVersion(virCapsPtr caps,
"hvm", "hvm",
ut.machine, ut.machine,
"qemu")) == NULL) { "qemu")) == NULL) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Cannot find suitable emulator for %s"), ut.machine); _("Cannot find suitable emulator for %s"), ut.machine);
return -1; return -1;
} }
......
...@@ -310,8 +310,8 @@ int qemuSetupCgroup(struct qemud_driver *driver, ...@@ -310,8 +310,8 @@ int qemuSetupCgroup(struct qemud_driver *driver,
goto cleanup; goto cleanup;
} }
} else { } else {
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("Block I/O tuning is not available on this host")); _("Block I/O tuning is not available on this host"));
goto cleanup; goto cleanup;
} }
} }
...@@ -333,8 +333,8 @@ int qemuSetupCgroup(struct qemud_driver *driver, ...@@ -333,8 +333,8 @@ int qemuSetupCgroup(struct qemud_driver *driver,
} }
} }
} else { } else {
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Block I/O tuning is not available on this host")); _("Block I/O tuning is not available on this host"));
goto cleanup; goto cleanup;
} }
} }
...@@ -372,8 +372,8 @@ int qemuSetupCgroup(struct qemud_driver *driver, ...@@ -372,8 +372,8 @@ int qemuSetupCgroup(struct qemud_driver *driver,
} }
} }
} else { } else {
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Memory cgroup is not available on this host")); _("Memory cgroup is not available on this host"));
} }
} }
...@@ -387,8 +387,8 @@ int qemuSetupCgroup(struct qemud_driver *driver, ...@@ -387,8 +387,8 @@ int qemuSetupCgroup(struct qemud_driver *driver,
goto cleanup; goto cleanup;
} }
} else { } else {
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("CPU tuning is not available on this host")); _("CPU tuning is not available on this host"));
} }
} }
...@@ -405,8 +405,8 @@ int qemuSetupCgroup(struct qemud_driver *driver, ...@@ -405,8 +405,8 @@ int qemuSetupCgroup(struct qemud_driver *driver,
mask = virDomainCpuSetFormat(vm->def->numatune.memory.nodemask, mask = virDomainCpuSetFormat(vm->def->numatune.memory.nodemask,
VIR_DOMAIN_CPUMASK_LEN); VIR_DOMAIN_CPUMASK_LEN);
if (!mask) { if (!mask) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("failed to convert memory nodemask")); _("failed to convert memory nodemask"));
goto cleanup; goto cleanup;
} }
...@@ -585,9 +585,9 @@ int qemuRemoveCgroup(struct qemud_driver *driver, ...@@ -585,9 +585,9 @@ int qemuRemoveCgroup(struct qemud_driver *driver,
rc = virCgroupForDomain(driver->cgroup, vm->def->name, &cgroup, 0); rc = virCgroupForDomain(driver->cgroup, vm->def->name, &cgroup, 0);
if (rc != 0) { if (rc != 0) {
if (!quiet) if (!quiet)
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Unable to find cgroup for %s"), _("Unable to find cgroup for %s"),
vm->def->name); vm->def->name);
return rc; return rc;
} }
......
此差异已折叠。
...@@ -140,9 +140,9 @@ int qemudLoadDriverConfig(struct qemud_driver *driver, ...@@ -140,9 +140,9 @@ int qemudLoadDriverConfig(struct qemud_driver *driver,
#define CHECK_TYPE(name,typ) if (p && p->type != (typ)) { \ #define CHECK_TYPE(name,typ) if (p && p->type != (typ)) { \
qemuReportError(VIR_ERR_INTERNAL_ERROR, \ virReportError(VIR_ERR_INTERNAL_ERROR, \
"%s: %s: expected type " #typ, \ "%s: %s: expected type " #typ, \
filename, (name)); \ filename, (name)); \
virConfFree(conf); \ virConfFree(conf); \
return -1; \ return -1; \
} }
...@@ -535,16 +535,16 @@ qemuDriverCloseCallbackSet(struct qemud_driver *driver, ...@@ -535,16 +535,16 @@ qemuDriverCloseCallbackSet(struct qemud_driver *driver,
closeDef = virHashLookup(driver->closeCallbacks, uuidstr); closeDef = virHashLookup(driver->closeCallbacks, uuidstr);
if (closeDef) { if (closeDef) {
if (closeDef->conn != conn) { if (closeDef->conn != conn) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Close callback for domain %s already registered" _("Close callback for domain %s already registered"
" with another connection %p"), " with another connection %p"),
vm->def->name, closeDef->conn); vm->def->name, closeDef->conn);
return -1; return -1;
} }
if (closeDef->cb && closeDef->cb != cb) { if (closeDef->cb && closeDef->cb != cb) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Another close callback is already defined for" _("Another close callback is already defined for"
" domain %s"), vm->def->name); " domain %s"), vm->def->name);
return -1; return -1;
} }
...@@ -582,9 +582,9 @@ qemuDriverCloseCallbackUnset(struct qemud_driver *driver, ...@@ -582,9 +582,9 @@ qemuDriverCloseCallbackUnset(struct qemud_driver *driver,
return -1; return -1;
if (closeDef->cb && closeDef->cb != cb) { if (closeDef->cb && closeDef->cb != cb) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Trying to remove mismatching close callback for" _("Trying to remove mismatching close callback for"
" domain %s"), vm->def->name); " domain %s"), vm->def->name);
return -1; return -1;
} }
......
...@@ -167,10 +167,6 @@ struct _qemuDomainCmdlineDef { ...@@ -167,10 +167,6 @@ struct _qemuDomainCmdlineDef {
# define QEMUD_MIGRATION_FIRST_PORT 49152 # define QEMUD_MIGRATION_FIRST_PORT 49152
# define QEMUD_MIGRATION_NUM_PORTS 64 # define QEMUD_MIGRATION_NUM_PORTS 64
# define qemuReportError(code, ...) \
virReportErrorHelper(VIR_FROM_QEMU, code, __FILE__, \
__FUNCTION__, __LINE__, __VA_ARGS__)
void qemuDriverLock(struct qemud_driver *driver); void qemuDriverLock(struct qemud_driver *driver);
void qemuDriverUnlock(struct qemud_driver *driver); void qemuDriverUnlock(struct qemud_driver *driver);
......
...@@ -344,8 +344,8 @@ static int qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, void *data) ...@@ -344,8 +344,8 @@ static int qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, void *data)
if (!(monitorpath = if (!(monitorpath =
virXPathString("string(./monitor[1]/@path)", ctxt))) { virXPathString("string(./monitor[1]/@path)", ctxt))) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("no monitor path")); "%s", _("no monitor path"));
goto error; goto error;
} }
...@@ -371,9 +371,9 @@ static int qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, void *data) ...@@ -371,9 +371,9 @@ static int qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, void *data)
break; break;
default: default:
VIR_FREE(monitorpath); VIR_FREE(monitorpath);
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("unsupported monitor type '%s'"), _("unsupported monitor type '%s'"),
virDomainChrTypeToString(priv->monConfig->type)); virDomainChrTypeToString(priv->monConfig->type));
goto error; goto error;
} }
...@@ -402,8 +402,8 @@ static int qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, void *data) ...@@ -402,8 +402,8 @@ static int qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, void *data)
} }
if ((n = virXPathNodeSet("./qemuCaps/flag", ctxt, &nodes)) < 0) { if ((n = virXPathNodeSet("./qemuCaps/flag", ctxt, &nodes)) < 0) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("failed to parse qemu capabilities flags")); "%s", _("failed to parse qemu capabilities flags"));
goto error; goto error;
} }
if (n > 0) { if (n > 0) {
...@@ -415,8 +415,8 @@ static int qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, void *data) ...@@ -415,8 +415,8 @@ static int qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, void *data)
if (str) { if (str) {
int flag = qemuCapsTypeFromString(str); int flag = qemuCapsTypeFromString(str);
if (flag < 0) { if (flag < 0) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Unknown qemu capabilities flag %s"), str); _("Unknown qemu capabilities flag %s"), str);
VIR_FREE(str); VIR_FREE(str);
goto error; goto error;
} }
...@@ -435,8 +435,8 @@ static int qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, void *data) ...@@ -435,8 +435,8 @@ static int qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, void *data)
int type; int type;
if ((type = qemuDomainJobTypeFromString(tmp)) < 0) { if ((type = qemuDomainJobTypeFromString(tmp)) < 0) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Unknown job type %s"), tmp); _("Unknown job type %s"), tmp);
VIR_FREE(tmp); VIR_FREE(tmp);
goto error; goto error;
} }
...@@ -448,8 +448,8 @@ static int qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, void *data) ...@@ -448,8 +448,8 @@ static int qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, void *data)
int async; int async;
if ((async = qemuDomainAsyncJobTypeFromString(tmp)) < 0) { if ((async = qemuDomainAsyncJobTypeFromString(tmp)) < 0) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Unknown async job type %s"), tmp); _("Unknown async job type %s"), tmp);
VIR_FREE(tmp); VIR_FREE(tmp);
goto error; goto error;
} }
...@@ -459,8 +459,8 @@ static int qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, void *data) ...@@ -459,8 +459,8 @@ static int qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, void *data)
if ((tmp = virXPathString("string(./job[1]/@phase)", ctxt))) { if ((tmp = virXPathString("string(./job[1]/@phase)", ctxt))) {
priv->job.phase = qemuDomainAsyncJobPhaseFromString(async, tmp); priv->job.phase = qemuDomainAsyncJobPhaseFromString(async, tmp);
if (priv->job.phase < 0) { if (priv->job.phase < 0) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Unknown job phase %s"), tmp); _("Unknown job phase %s"), tmp);
VIR_FREE(tmp); VIR_FREE(tmp);
goto error; goto error;
} }
...@@ -514,9 +514,9 @@ qemuDomainDefNamespaceParse(xmlDocPtr xml ATTRIBUTE_UNUSED, ...@@ -514,9 +514,9 @@ qemuDomainDefNamespaceParse(xmlDocPtr xml ATTRIBUTE_UNUSED,
int n, i; int n, i;
if (xmlXPathRegisterNs(ctxt, BAD_CAST "qemu", BAD_CAST QEMU_NAMESPACE_HREF) < 0) { if (xmlXPathRegisterNs(ctxt, BAD_CAST "qemu", BAD_CAST QEMU_NAMESPACE_HREF) < 0) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Failed to register xml namespace '%s'"), _("Failed to register xml namespace '%s'"),
QEMU_NAMESPACE_HREF); QEMU_NAMESPACE_HREF);
return -1; return -1;
} }
...@@ -537,8 +537,8 @@ qemuDomainDefNamespaceParse(xmlDocPtr xml ATTRIBUTE_UNUSED, ...@@ -537,8 +537,8 @@ qemuDomainDefNamespaceParse(xmlDocPtr xml ATTRIBUTE_UNUSED,
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
cmd->args[cmd->num_args] = virXMLPropString(nodes[i], "value"); cmd->args[cmd->num_args] = virXMLPropString(nodes[i], "value");
if (cmd->args[cmd->num_args] == NULL) { if (cmd->args[cmd->num_args] == NULL) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("No qemu command-line argument specified")); "%s", _("No qemu command-line argument specified"));
goto error; goto error;
} }
cmd->num_args++; cmd->num_args++;
...@@ -563,23 +563,23 @@ qemuDomainDefNamespaceParse(xmlDocPtr xml ATTRIBUTE_UNUSED, ...@@ -563,23 +563,23 @@ qemuDomainDefNamespaceParse(xmlDocPtr xml ATTRIBUTE_UNUSED,
tmp = virXMLPropString(nodes[i], "name"); tmp = virXMLPropString(nodes[i], "name");
if (tmp == NULL) { if (tmp == NULL) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("No qemu environment name specified")); "%s", _("No qemu environment name specified"));
goto error; goto error;
} }
if (tmp[0] == '\0') { if (tmp[0] == '\0') {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("Empty qemu environment name specified")); "%s", _("Empty qemu environment name specified"));
goto error; goto error;
} }
if (!c_isalpha(tmp[0]) && tmp[0] != '_') { if (!c_isalpha(tmp[0]) && tmp[0] != '_') {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("Invalid environment name, it must begin with a letter or underscore")); "%s", _("Invalid environment name, it must begin with a letter or underscore"));
goto error; goto error;
} }
if (strspn(tmp, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_") != strlen(tmp)) { if (strspn(tmp, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_") != strlen(tmp)) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("Invalid environment name, it must contain only alphanumerics and underscore")); "%s", _("Invalid environment name, it must contain only alphanumerics and underscore"));
goto error; goto error;
} }
...@@ -838,13 +838,13 @@ error: ...@@ -838,13 +838,13 @@ error:
priv->job.owner, priv->job.asyncOwner); priv->job.owner, priv->job.asyncOwner);
if (errno == ETIMEDOUT) if (errno == ETIMEDOUT)
qemuReportError(VIR_ERR_OPERATION_TIMEOUT, virReportError(VIR_ERR_OPERATION_TIMEOUT,
"%s", _("cannot acquire state change lock")); "%s", _("cannot acquire state change lock"));
else if (driver->max_queued && else if (driver->max_queued &&
priv->jobs_queued > driver->max_queued) priv->jobs_queued > driver->max_queued)
qemuReportError(VIR_ERR_OPERATION_FAILED, virReportError(VIR_ERR_OPERATION_FAILED,
"%s", _("cannot acquire state change lock " "%s", _("cannot acquire state change lock "
"due to max_queued limit")); "due to max_queued limit"));
else else
virReportSystemError(errno, virReportSystemError(errno,
"%s", _("cannot acquire job mutex")); "%s", _("cannot acquire job mutex"));
...@@ -899,8 +899,8 @@ int qemuDomainObjBeginJobWithDriver(struct qemud_driver *driver, ...@@ -899,8 +899,8 @@ int qemuDomainObjBeginJobWithDriver(struct qemud_driver *driver,
enum qemuDomainJob job) enum qemuDomainJob job)
{ {
if (job <= QEMU_JOB_NONE || job >= QEMU_JOB_ASYNC) { if (job <= QEMU_JOB_NONE || job >= QEMU_JOB_ASYNC) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Attempt to start invalid job")); _("Attempt to start invalid job"));
return -1; return -1;
} }
...@@ -971,8 +971,8 @@ qemuDomainObjEnterMonitorInternal(struct qemud_driver *driver, ...@@ -971,8 +971,8 @@ qemuDomainObjEnterMonitorInternal(struct qemud_driver *driver,
if (asyncJob != QEMU_ASYNC_JOB_NONE) { if (asyncJob != QEMU_ASYNC_JOB_NONE) {
if (asyncJob != priv->job.asyncJob) { if (asyncJob != priv->job.asyncJob) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("unexpected async job %d"), asyncJob); _("unexpected async job %d"), asyncJob);
return -1; return -1;
} }
if (priv->job.asyncOwner != virThreadSelfID()) if (priv->job.asyncOwner != virThreadSelfID())
...@@ -983,8 +983,8 @@ qemuDomainObjEnterMonitorInternal(struct qemud_driver *driver, ...@@ -983,8 +983,8 @@ qemuDomainObjEnterMonitorInternal(struct qemud_driver *driver,
QEMU_ASYNC_JOB_NONE) < 0) QEMU_ASYNC_JOB_NONE) < 0)
return -1; return -1;
if (!virDomainObjIsActive(obj)) { if (!virDomainObjIsActive(obj)) {
qemuReportError(VIR_ERR_OPERATION_FAILED, "%s", virReportError(VIR_ERR_OPERATION_FAILED, "%s",
_("domain is no longer running")); _("domain is no longer running"));
/* Still referenced by the containing async job. */ /* Still referenced by the containing async job. */
ignore_value(qemuDomainObjEndJob(driver, obj)); ignore_value(qemuDomainObjEndJob(driver, obj));
return -1; return -1;
...@@ -1241,8 +1241,8 @@ qemuDomainDefFormatBuf(struct qemud_driver *driver, ...@@ -1241,8 +1241,8 @@ qemuDomainDefFormatBuf(struct qemud_driver *driver,
def_cpu && def_cpu &&
(def_cpu->mode != VIR_CPU_MODE_CUSTOM || def_cpu->model)) { (def_cpu->mode != VIR_CPU_MODE_CUSTOM || def_cpu->model)) {
if (!driver->caps || !driver->caps->host.cpu) { if (!driver->caps || !driver->caps->host.cpu) {
qemuReportError(VIR_ERR_OPERATION_FAILED, virReportError(VIR_ERR_OPERATION_FAILED,
"%s", _("cannot get host CPU capabilities")); "%s", _("cannot get host CPU capabilities"));
goto cleanup; goto cleanup;
} }
...@@ -1575,8 +1575,8 @@ qemuFindQemuImgBinary(struct qemud_driver *driver) ...@@ -1575,8 +1575,8 @@ qemuFindQemuImgBinary(struct qemud_driver *driver)
if (!driver->qemuImgBinary) if (!driver->qemuImgBinary)
driver->qemuImgBinary = virFindFileInPath("qemu-img"); driver->qemuImgBinary = virFindFileInPath("qemu-img");
if (!driver->qemuImgBinary) if (!driver->qemuImgBinary)
qemuReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("unable to find kvm-img or qemu-img")); "%s", _("unable to find kvm-img or qemu-img"));
} }
return driver->qemuImgBinary; return driver->qemuImgBinary;
...@@ -1672,10 +1672,10 @@ qemuDomainSnapshotForEachQcow2Raw(struct qemud_driver *driver, ...@@ -1672,10 +1672,10 @@ qemuDomainSnapshotForEachQcow2Raw(struct qemud_driver *driver,
qemuDomainSnapshotForEachQcow2Raw(driver, def, name, qemuDomainSnapshotForEachQcow2Raw(driver, def, name,
"-d", false, i); "-d", false, i);
} }
qemuReportError(VIR_ERR_OPERATION_INVALID, virReportError(VIR_ERR_OPERATION_INVALID,
_("Disk device '%s' does not support" _("Disk device '%s' does not support"
" snapshotting"), " snapshotting"),
def->disks[i]->dst); def->disks[i]->dst);
return -1; return -1;
} }
......
此差异已折叠。
...@@ -31,6 +31,8 @@ ...@@ -31,6 +31,8 @@
#include "hostusb.h" #include "hostusb.h"
#include "virnetdev.h" #include "virnetdev.h"
#define VIR_FROM_THIS VIR_FROM_QEMU
static pciDeviceList * static pciDeviceList *
qemuGetPciHostDeviceList(virDomainHostdevDefPtr *hostdevs, int nhostdevs) qemuGetPciHostDeviceList(virDomainHostdevDefPtr *hostdevs, int nhostdevs)
{ {
...@@ -271,10 +273,11 @@ qemuDomainHostdevNetConfigVirtPortProfile(const char *linkdev, int vf, ...@@ -271,10 +273,11 @@ qemuDomainHostdevNetConfigVirtPortProfile(const char *linkdev, int vf,
case VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH: case VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH:
case VIR_NETDEV_VPORT_PROFILE_8021QBG: case VIR_NETDEV_VPORT_PROFILE_8021QBG:
case VIR_NETDEV_VPORT_PROFILE_LAST: case VIR_NETDEV_VPORT_PROFILE_LAST:
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("virtualport type %s is " virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
"currently not supported on interfaces of type " _("virtualport type %s is "
"hostdev"), "currently not supported on interfaces of type "
virNetDevVPortTypeToString(virtPort->virtPortType)); "hostdev"),
virNetDevVPortTypeToString(virtPort->virtPortType));
break; break;
case VIR_NETDEV_VPORT_PROFILE_8021QBH: case VIR_NETDEV_VPORT_PROFILE_8021QBH:
...@@ -307,9 +310,9 @@ qemuDomainHostdevNetConfigReplace(virDomainHostdevDefPtr hostdev, ...@@ -307,9 +310,9 @@ qemuDomainHostdevNetConfigReplace(virDomainHostdevDefPtr hostdev,
isvf = qemuDomainHostdevIsVirtualFunction(hostdev); isvf = qemuDomainHostdevIsVirtualFunction(hostdev);
if (isvf <= 0) { if (isvf <= 0) {
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("Interface type hostdev is currently supported on" _("Interface type hostdev is currently supported on"
" SR-IOV Virtual Functions only")); " SR-IOV Virtual Functions only"));
return ret; return ret;
} }
...@@ -345,9 +348,9 @@ qemuDomainHostdevNetConfigRestore(virDomainHostdevDefPtr hostdev, ...@@ -345,9 +348,9 @@ qemuDomainHostdevNetConfigRestore(virDomainHostdevDefPtr hostdev,
isvf = qemuDomainHostdevIsVirtualFunction(hostdev); isvf = qemuDomainHostdevIsVirtualFunction(hostdev);
if (isvf <= 0) { if (isvf <= 0) {
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("Interface type hostdev is currently supported on" _("Interface type hostdev is currently supported on"
" SR-IOV Virtual Functions only")); " SR-IOV Virtual Functions only"));
return ret; return ret;
} }
...@@ -399,9 +402,9 @@ int qemuPrepareHostdevPCIDevices(struct qemud_driver *driver, ...@@ -399,9 +402,9 @@ int qemuPrepareHostdevPCIDevices(struct qemud_driver *driver,
pciDevice *other; pciDevice *other;
if (!pciDeviceIsAssignable(dev, !driver->relaxedACS)) { if (!pciDeviceIsAssignable(dev, !driver->relaxedACS)) {
qemuReportError(VIR_ERR_OPERATION_INVALID, virReportError(VIR_ERR_OPERATION_INVALID,
_("PCI device %s is not assignable"), _("PCI device %s is not assignable"),
pciDeviceGetName(dev)); pciDeviceGetName(dev));
goto cleanup; goto cleanup;
} }
/* The device is in use by other active domain if /* The device is in use by other active domain if
...@@ -411,13 +414,13 @@ int qemuPrepareHostdevPCIDevices(struct qemud_driver *driver, ...@@ -411,13 +414,13 @@ int qemuPrepareHostdevPCIDevices(struct qemud_driver *driver,
const char *other_name = pciDeviceGetUsedBy(other); const char *other_name = pciDeviceGetUsedBy(other);
if (other_name) if (other_name)
qemuReportError(VIR_ERR_OPERATION_INVALID, virReportError(VIR_ERR_OPERATION_INVALID,
_("PCI device %s is in use by domain %s"), _("PCI device %s is in use by domain %s"),
pciDeviceGetName(dev), other_name); pciDeviceGetName(dev), other_name);
else else
qemuReportError(VIR_ERR_OPERATION_INVALID, virReportError(VIR_ERR_OPERATION_INVALID,
_("PCI device %s is already in use"), _("PCI device %s is already in use"),
pciDeviceGetName(dev)); pciDeviceGetName(dev));
goto cleanup; goto cleanup;
} }
} }
...@@ -579,13 +582,13 @@ qemuPrepareHostdevUSBDevices(struct qemud_driver *driver, ...@@ -579,13 +582,13 @@ qemuPrepareHostdevUSBDevices(struct qemud_driver *driver,
const char *other_name = usbDeviceGetUsedBy(tmp); const char *other_name = usbDeviceGetUsedBy(tmp);
if (other_name) if (other_name)
qemuReportError(VIR_ERR_OPERATION_INVALID, virReportError(VIR_ERR_OPERATION_INVALID,
_("USB device %s is in use by domain %s"), _("USB device %s is in use by domain %s"),
usbDeviceGetName(tmp), other_name); usbDeviceGetName(tmp), other_name);
else else
qemuReportError(VIR_ERR_OPERATION_INVALID, virReportError(VIR_ERR_OPERATION_INVALID,
_("USB device %s is already in use"), _("USB device %s is already in use"),
usbDeviceGetName(tmp)); usbDeviceGetName(tmp));
goto error; goto error;
} }
...@@ -653,9 +656,9 @@ qemuPrepareHostUSBDevices(struct qemud_driver *driver, ...@@ -653,9 +656,9 @@ qemuPrepareHostUSBDevices(struct qemud_driver *driver,
goto cleanup; goto cleanup;
if (usbDeviceListCount(devs) > 1) { if (usbDeviceListCount(devs) > 1) {
qemuReportError(VIR_ERR_OPERATION_FAILED, virReportError(VIR_ERR_OPERATION_FAILED,
_("multiple USB devices for %x:%x, " _("multiple USB devices for %x:%x, "
"use <address> to specify one"), vendor, product); "use <address> to specify one"), vendor, product);
usbDeviceListFree(devs); usbDeviceListFree(devs);
goto cleanup; goto cleanup;
} }
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册