mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 13:45:38 +00:00
qemu: Remove need for qemuDomainParseIOThreadAlias
Rather than have a separate routine to parse the alias of an iothread returned from qemu in order to get the iothread_id value, parse the alias when returning and just return the iothread_id in qemuMonitorIOThreadInfoPtr This set of patches removes the function, changes the "char *name" to "unsigned int" and handles all the fallout.
This commit is contained in:
parent
e505591e28
commit
4c2ca5664a
@ -677,23 +677,6 @@ qemuOpenVhostNet(virDomainDefPtr def,
|
||||
return -1;
|
||||
}
|
||||
|
||||
int
|
||||
qemuDomainParseIOThreadAlias(char *alias,
|
||||
unsigned int *iothread_id)
|
||||
{
|
||||
unsigned int idval;
|
||||
|
||||
if (virStrToLong_ui(alias + strlen("iothread"),
|
||||
NULL, 10, &idval) < 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("failed to find iothread id for '%s'"),
|
||||
alias);
|
||||
return -1;
|
||||
}
|
||||
|
||||
*iothread_id = idval;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
qemuNetworkPrepareDevices(virDomainDefPtr def)
|
||||
|
@ -238,9 +238,6 @@ int qemuOpenVhostNet(virDomainDefPtr def,
|
||||
int *vhostfd,
|
||||
size_t *vhostfdSize);
|
||||
|
||||
int qemuDomainParseIOThreadAlias(char *alias,
|
||||
unsigned int *iothread_id);
|
||||
|
||||
int qemuNetworkPrepareDevices(virDomainDefPtr def);
|
||||
|
||||
/*
|
||||
|
@ -5918,16 +5918,11 @@ qemuDomainGetIOThreadsLive(virQEMUDriverPtr driver,
|
||||
goto endjob;
|
||||
|
||||
for (i = 0; i < niothreads; i++) {
|
||||
unsigned int iothread_id;
|
||||
virBitmapPtr map = NULL;
|
||||
|
||||
if (qemuDomainParseIOThreadAlias(iothreads[i]->name,
|
||||
&iothread_id) < 0)
|
||||
goto endjob;
|
||||
|
||||
if (VIR_ALLOC(info_ret[i]) < 0)
|
||||
goto endjob;
|
||||
info_ret[i]->iothread_id = iothread_id;
|
||||
info_ret[i]->iothread_id = iothreads[i]->iothread_id;
|
||||
|
||||
if (virProcessGetAffinity(iothreads[i]->thread_id, &map, hostcpus) < 0)
|
||||
goto endjob;
|
||||
@ -6292,7 +6287,7 @@ qemuDomainHotplugAddIOThread(virQEMUDriverPtr driver,
|
||||
* in the QEMU IOThread list, so we can add it to our iothreadids list
|
||||
*/
|
||||
for (idx = 0; idx < new_niothreads; idx++) {
|
||||
if (STREQ(new_iothreads[idx]->name, alias))
|
||||
if (new_iothreads[idx]->iothread_id == iothread_id)
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -3818,7 +3818,6 @@ qemuMonitorIOThreadInfoFree(qemuMonitorIOThreadInfoPtr iothread)
|
||||
{
|
||||
if (!iothread)
|
||||
return;
|
||||
VIR_FREE(iothread->name);
|
||||
VIR_FREE(iothread);
|
||||
}
|
||||
|
||||
|
@ -877,7 +877,7 @@ typedef struct _qemuMonitorIOThreadInfo qemuMonitorIOThreadInfo;
|
||||
typedef qemuMonitorIOThreadInfo *qemuMonitorIOThreadInfoPtr;
|
||||
|
||||
struct _qemuMonitorIOThreadInfo {
|
||||
char *name;
|
||||
unsigned int iothread_id;
|
||||
int thread_id;
|
||||
};
|
||||
int qemuMonitorGetIOThreads(qemuMonitorPtr mon,
|
||||
|
@ -6481,20 +6481,28 @@ qemuMonitorJSONGetIOThreads(qemuMonitorPtr mon,
|
||||
const char *tmp;
|
||||
qemuMonitorIOThreadInfoPtr info;
|
||||
|
||||
if (VIR_ALLOC(info) < 0)
|
||||
goto cleanup;
|
||||
|
||||
infolist[i] = info;
|
||||
|
||||
if (!(tmp = virJSONValueObjectGetString(child, "id"))) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("query-iothreads reply data was missing 'id'"));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (VIR_STRDUP(info->name, tmp) < 0)
|
||||
if (!STRPREFIX(tmp, "iothread"))
|
||||
continue;
|
||||
|
||||
if (VIR_ALLOC(info) < 0)
|
||||
goto cleanup;
|
||||
|
||||
infolist[i] = info;
|
||||
|
||||
if (virStrToLong_ui(tmp + strlen("iothread"),
|
||||
NULL, 10, &info->iothread_id) < 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("failed to find iothread id for '%s'"),
|
||||
tmp);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (virJSONValueObjectGetNumberInt(child, "thread-id",
|
||||
&info->thread_id) < 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
|
@ -2248,16 +2248,13 @@ qemuProcessDetectIOThreadPIDs(virQEMUDriverPtr driver,
|
||||
}
|
||||
|
||||
for (i = 0; i < niothreads; i++) {
|
||||
unsigned int iothread_id;
|
||||
virDomainIOThreadIDDefPtr iothrid;
|
||||
|
||||
if (qemuDomainParseIOThreadAlias(iothreads[i]->name,
|
||||
&iothread_id) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (!(iothrid = virDomainIOThreadIDFind(vm->def, iothread_id))) {
|
||||
if (!(iothrid = virDomainIOThreadIDFind(vm->def,
|
||||
iothreads[i]->iothread_id))) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("iothread %d not found"), iothread_id);
|
||||
_("iothread %d not found"),
|
||||
iothreads[i]->iothread_id);
|
||||
goto cleanup;
|
||||
}
|
||||
iothrid->thread_id = iothreads[i]->thread_id;
|
||||
|
@ -2269,12 +2269,12 @@ testQemuMonitorJSONGetIOThreads(const void *data)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
#define CHECK(i, wantname, wantthread_id) \
|
||||
#define CHECK(i, wantiothread_id, wantthread_id) \
|
||||
do { \
|
||||
if (STRNEQ(info[i]->name, (wantname))) { \
|
||||
if (info[i]->iothread_id != (wantiothread_id)) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"name %s is not %s", \
|
||||
info[i]->name, (wantname)); \
|
||||
"iothread_id %u is not %u", \
|
||||
info[i]->iothread_id, (wantiothread_id)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
if (info[i]->thread_id != (wantthread_id)) { \
|
||||
@ -2285,8 +2285,8 @@ testQemuMonitorJSONGetIOThreads(const void *data)
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
CHECK(0, "iothread1", 30992);
|
||||
CHECK(1, "iothread2", 30993);
|
||||
CHECK(0, 1, 30992);
|
||||
CHECK(1, 2, 30993);
|
||||
|
||||
#undef CHECK
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user