The QEMU flags are commonly stored as a signed or unsigned int, allowing only 31 flags. This limit is rather close, so to aid future patches, change it to a 64-bit int * src/qemu/qemu_conf.c, src/qemu/qemu_conf.h, src/qemu/qemu_driver.c, tests/qemuargv2xmltest.c, tests/qemuhelptest.c, tests/qemuxml2argvtest.c: Use 'unsigned long long' for QEMU flags --- src/qemu/qemu_conf.c | 28 ++++++++++++++-------------- src/qemu/qemu_conf.h | 14 +++++++------- src/qemu/qemu_driver.c | 12 ++++++------ tests/qemuargv2xmltest.c | 2 +- tests/qemuhelptest.c | 13 +++++++------ tests/qemuxml2argvtest.c | 7 ++++--- 6 files changed, 39 insertions(+), 37 deletions(-) diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index 257b4a4..e3769c8 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -1108,12 +1108,12 @@ virCapsPtr qemudCapsInit(virCapsPtr old_caps) { return NULL; } -static unsigned int qemudComputeCmdFlags(const char *help, - unsigned int version, - unsigned int is_kvm, - unsigned int kvm_version) +static unsigned long long qemudComputeCmdFlags(const char *help, + unsigned int version, + unsigned int is_kvm, + unsigned int kvm_version) { - unsigned int flags = 0; + unsigned long long flags = 0; if (strstr(help, "-no-kqemu")) flags |= QEMUD_CMD_FLAG_KQEMU; @@ -1236,7 +1236,7 @@ static unsigned int qemudComputeCmdFlags(const char *help, #define SKIP_BLANKS(p) do { while ((*(p) == ' ') || (*(p) == '\t')) (p)++; } while (0) int qemudParseHelpStr(const char *help, - unsigned int *flags, + unsigned long long *flags, unsigned int *version, unsigned int *is_kvm, unsigned int *kvm_version) @@ -1316,14 +1316,14 @@ fail: int qemudExtractVersionInfo(const char *qemu, unsigned int *retversion, - unsigned int *retflags) { + unsigned long long *retflags) { const char *const qemuarg[] = { qemu, "-help", NULL }; const char *const qemuenv[] = { "LC_ALL=C", NULL }; pid_t child; int newstdout = -1; int ret = -1, status; unsigned int version, is_kvm, kvm_version; - unsigned int flags = 0; + unsigned long long flags = 0; if (retflags) *retflags = 0; @@ -1425,7 +1425,7 @@ int qemudNetworkIfaceConnect(virConnectPtr conn, struct qemud_driver *driver, virDomainNetDefPtr net, - int qemuCmdFlags) + unsigned long long qemuCmdFlags) { char *brname = NULL; int err; @@ -1637,7 +1637,7 @@ no_memory: int -qemuAssignDeviceDiskAlias(virDomainDiskDefPtr def, int qemuCmdFlags) +qemuAssignDeviceDiskAlias(virDomainDiskDefPtr def, unsigned long long qemuCmdFlags) { if (qemuCmdFlags & QEMUD_CMD_FLAG_DRIVE) { if (qemuCmdFlags & QEMUD_CMD_FLAG_DEVICE) @@ -1720,7 +1720,7 @@ qemuAssignDeviceControllerAlias(virDomainControllerDefPtr controller) static int -qemuAssignDeviceAliases(virDomainDefPtr def, int qemuCmdFlags) +qemuAssignDeviceAliases(virDomainDefPtr def, unsigned long long qemuCmdFlags) { int i; @@ -2189,7 +2189,7 @@ qemuSafeSerialParamValue(virConnectPtr conn, char * qemuBuildDriveStr(virDomainDiskDefPtr disk, int bootable, - int qemuCmdFlags) + unsigned long long qemuCmdFlags) { virBuffer opt = VIR_BUFFER_INITIALIZER; const char *bus = virDomainDiskQEMUBusTypeToString(disk->bus); @@ -3017,7 +3017,7 @@ no_memory: static char * qemuBuildSmpArgStr(const virDomainDefPtr def, - int qemuCmdFlags) + unsigned long long qemuCmdFlags) { virBuffer buf = VIR_BUFFER_INITIALIZER; @@ -3057,7 +3057,7 @@ int qemudBuildCommandLine(virConnectPtr conn, virDomainDefPtr def, virDomainChrDefPtr monitor_chr, int monitor_json, - unsigned int qemuCmdFlags, + unsigned long long qemuCmdFlags, const char ***retargv, const char ***retenv, int **tapfds, diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h index 5525b6c..f6397b7 100644 --- a/src/qemu/qemu_conf.h +++ b/src/qemu/qemu_conf.h @@ -170,10 +170,10 @@ virCapsPtr qemudCapsInit (virCapsPtr old_caps); int qemudExtractVersion (struct qemud_driver *driver); int qemudExtractVersionInfo (const char *qemu, unsigned int *version, - unsigned int *flags); + unsigned long long *qemuCmdFlags); int qemudParseHelpStr (const char *str, - unsigned int *flags, + unsigned long long *qemuCmdFlags, unsigned int *version, unsigned int *is_kvm, unsigned int *kvm_version); @@ -183,7 +183,7 @@ int qemudBuildCommandLine (virConnectPtr conn, virDomainDefPtr def, virDomainChrDefPtr monitor_chr, int monitor_json, - unsigned int qemuCmdFlags, + unsigned long long qemuCmdFlags, const char ***retargv, const char ***retenv, int **tapfds, @@ -205,12 +205,12 @@ char * qemuBuildNicStr(virConnectPtr conn, /* Current, best practice */ char * qemuBuildNicDevStr(virDomainNetDefPtr net, - int qemuCmdFlags); + int vlan); /* Both legacy & current support */ char *qemuBuildDriveStr(virDomainDiskDefPtr disk, int bootable, - int qemuCmdFlags); + unsigned long long qemuCmdFlags); /* Current, best practice */ char * qemuBuildDriveDevStr(virConnectPtr conn, @@ -244,7 +244,7 @@ char * qemuBuildUSBHostdevDevStr(virDomainHostdevDefPtr dev); int qemudNetworkIfaceConnect (virConnectPtr conn, struct qemud_driver *driver, virDomainNetDefPtr net, - int qemuCmdFlags); + unsigned long long qemuCmdFlags); int qemudProbeMachineTypes (const char *binary, virCapsGuestMachinePtr **machines, @@ -283,7 +283,7 @@ int qemuAssignDevicePCISlots(virDomainDefPtr def, qemuDomainPCIAddressSetPtr ad int qemuDomainNetVLAN(virDomainNetDefPtr def); int qemuAssignDeviceNetAlias(virDomainDefPtr def, virDomainNetDefPtr net, int idx); -int qemuAssignDeviceDiskAlias(virDomainDiskDefPtr def, int qemuCmdFlags); +int qemuAssignDeviceDiskAlias(virDomainDiskDefPtr def, unsigned long long qemuCmdFlags); int qemuAssignDeviceHostdevAlias(virDomainDefPtr def, virDomainHostdevDefPtr net, int idx); int qemuAssignDeviceControllerAlias(virDomainControllerDefPtr controller); diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 4374291..54d33cd 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -2520,7 +2520,7 @@ static int qemudStartVMDaemon(virConnectPtr conn, struct stat sb; int *tapfds = NULL; int ntapfds = 0; - unsigned int qemuCmdFlags; + unsigned long long qemuCmdFlags; fd_set keepfd; const char *emulator; pid_t child; @@ -4707,7 +4707,7 @@ static char *qemuDomainXMLToNative(virConnectPtr conn, virDomainDefPtr def = NULL; virDomainChrDef monConfig; const char *emulator; - unsigned int qemuCmdFlags; + unsigned long long qemuCmdFlags; struct stat sb; const char **retargv = NULL; const char **retenv = NULL; @@ -5586,7 +5586,7 @@ static int qemudDomainAttachNetDevice(virConnectPtr conn, struct qemud_driver *driver, virDomainObjPtr vm, virDomainNetDefPtr net, - unsigned int qemuCmdFlags) + unsigned long long qemuCmdFlags) { qemuDomainObjPrivatePtr priv = vm->privateData; char *tapfd_name = NULL; @@ -5901,7 +5901,7 @@ static int qemudDomainAttachDevice(virDomainPtr dom, struct qemud_driver *driver = dom->conn->privateData; virDomainObjPtr vm; virDomainDeviceDefPtr dev = NULL; - unsigned int qemuCmdFlags; + unsigned long long qemuCmdFlags; virCgroupPtr cgroup = NULL; int ret = -1; @@ -7437,7 +7437,7 @@ qemudDomainMigratePrepareTunnel(virConnectPtr dconn, int ret = -1; int internalret; char *unixfile = NULL; - unsigned int qemuCmdFlags; + unsigned long long qemuCmdFlags; struct qemuStreamMigFile *qemust = NULL; qemuDriverLock(driver); @@ -7884,7 +7884,7 @@ static int doTunnelMigrate(virDomainPtr dom, virStreamPtr st = NULL; char *unixfile = NULL; int internalret; - unsigned int qemuCmdFlags; + unsigned long long qemuCmdFlags; int status; unsigned long long transferred, remaining, total; diff --git a/tests/qemuargv2xmltest.c b/tests/qemuargv2xmltest.c index 1f1914b..c125a34 100644 --- a/tests/qemuargv2xmltest.c +++ b/tests/qemuargv2xmltest.c @@ -75,7 +75,7 @@ static int testCompareXMLToArgvFiles(const char *xml, struct testInfo { const char *name; - int extraFlags; + unsigned long long extraFlags; const char *migrateFrom; }; diff --git a/tests/qemuhelptest.c b/tests/qemuhelptest.c index 34a6048..0f2b509 100644 --- a/tests/qemuhelptest.c +++ b/tests/qemuhelptest.c @@ -12,10 +12,10 @@ struct testInfo { const char *name; - unsigned flags; - unsigned version; - unsigned is_kvm; - unsigned kvm_version; + unsigned long long flags; + unsigned int version; + unsigned int is_kvm; + unsigned int kvm_version; }; static char *progname; @@ -41,7 +41,8 @@ static int testHelpStrParsing(const void *data) char path[PATH_MAX]; char helpStr[MAX_HELP_OUTPUT_SIZE]; char *help = &(helpStr[0]); - unsigned flags, version, is_kvm, kvm_version; + unsigned int version, is_kvm, kvm_version; + unsigned long long flags; snprintf(path, PATH_MAX, "%s/qemuhelpdata/%s", abs_srcdir, info->name); @@ -52,7 +53,7 @@ static int testHelpStrParsing(const void *data) return -1; if (flags != info->flags) { - fprintf(stderr, "Computed flags do not match: got 0x%x, expected 0x%x\n", + fprintf(stderr, "Computed flags do not match: got 0x%llx, expected 0x%llx\n", flags, info->flags); if (getenv("VIR_TEST_DEBUG")) diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 67dc47e..f4908b8 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -24,7 +24,7 @@ static struct qemud_driver driver; static int testCompareXMLToArgvFiles(const char *xml, const char *cmd, - int extraFlags, + unsigned long long extraFlags, const char *migrateFrom) { char argvData[MAX_FILE]; char *expectargv = &(argvData[0]); @@ -32,7 +32,8 @@ static int testCompareXMLToArgvFiles(const char *xml, const char **argv = NULL; const char **qenv = NULL; const char **tmp = NULL; - int ret = -1, len, flags; + int ret = -1, len; + unsigned long long flags; virDomainDefPtr vmdef = NULL; virDomainChrDef monitor_chr; @@ -142,7 +143,7 @@ static int testCompareXMLToArgvFiles(const char *xml, struct testInfo { const char *name; - int extraFlags; + unsigned long long extraFlags; const char *migrateFrom; }; -- 1.6.6 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list