[libvirt] [PATCH 0/5] Const correctnes/random fixes

Few fixes/tweaks that have accumulated in my memory hotplug branch. They should be trivial enough and semantically inert. Peter Krempa (5): conf: Fix comment mentioning actual type of @multi member of virDevicePCIAddress qemu: command: Honor const-correctnes in qemuBuildNumaArgStr util: json: Make argument of virJSONValueArraySize const schemas: Move definition of 'hexuint' to basictypes util: bitmap: Tolerate NULL bitmaps in virBitmapEqual docs/schemas/basictypes.rng | 6 ++++++ docs/schemas/nodedev.rng | 6 ------ src/conf/device_conf.h | 2 +- src/qemu/qemu_command.c | 2 +- src/util/virbitmap.c | 6 ++++++ src/util/virbitmap.h | 3 +-- src/util/virjson.c | 2 +- src/util/virjson.h | 2 +- 8 files changed, 17 insertions(+), 12 deletions(-) -- 2.2.1

After refactor to use the virTristateSwitch enum the comment in the struct was not adjusted. --- src/conf/device_conf.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/conf/device_conf.h b/src/conf/device_conf.h index f067a35..7256cdc 100644 --- a/src/conf/device_conf.h +++ b/src/conf/device_conf.h @@ -52,7 +52,7 @@ struct _virDevicePCIAddress { unsigned int bus; unsigned int slot; unsigned int function; - int multi; /* enum virDomainDeviceAddressPCIMulti */ + int multi; /* virTristateSwitch */ }; typedef struct _virInterfaceLink virInterfaceLink; -- 2.2.1

@def is modified in the function indirectly although it's marked as const. --- src/qemu/qemu_command.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 1ebfdd1..b4ac3d9 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6637,7 +6637,7 @@ qemuBuildSmpArgStr(const virDomainDef *def, static int qemuBuildNumaArgStr(virQEMUDriverConfigPtr cfg, - const virDomainDef *def, + virDomainDefPtr def, virCommandPtr cmd, virQEMUCapsPtr qemuCaps, virBitmapPtr nodeset) -- 2.2.1

The function doesn't allow to modify the array in any way, thus the argument can be const. --- src/util/virjson.c | 2 +- src/util/virjson.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/util/virjson.c b/src/util/virjson.c index 3ffa19f..9f2e1cf 100644 --- a/src/util/virjson.c +++ b/src/util/virjson.c @@ -797,7 +797,7 @@ virJSONValueIsArray(virJSONValuePtr array) int -virJSONValueArraySize(virJSONValuePtr array) +virJSONValueArraySize(const virJSONValue *array) { if (array->type != VIR_JSON_TYPE_ARRAY) return -1; diff --git a/src/util/virjson.h b/src/util/virjson.h index 1996a91..c0aefba 100644 --- a/src/util/virjson.h +++ b/src/util/virjson.h @@ -105,7 +105,7 @@ int virJSONValueObjectHasKey(virJSONValuePtr object, const char *key); virJSONValuePtr virJSONValueObjectGet(virJSONValuePtr object, const char *key); bool virJSONValueIsArray(virJSONValuePtr array); -int virJSONValueArraySize(virJSONValuePtr object); +int virJSONValueArraySize(const virJSONValue *array); virJSONValuePtr virJSONValueArrayGet(virJSONValuePtr object, unsigned int element); virJSONValuePtr virJSONValueArraySteal(virJSONValuePtr object, unsigned int element); -- 2.2.1

Allow reuse of the type. --- docs/schemas/basictypes.rng | 6 ++++++ docs/schemas/nodedev.rng | 6 ------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/schemas/basictypes.rng b/docs/schemas/basictypes.rng index efc9da4..2bc9c1b 100644 --- a/docs/schemas/basictypes.rng +++ b/docs/schemas/basictypes.rng @@ -14,6 +14,12 @@ </data> </define> + <define name='hexuint'> + <data type='string'> + <param name="pattern">(0x)?[0-9a-f]+</param> + </data> + </define> + <define name="positiveInteger"> <data type="positiveInteger"> <param name="pattern">[0-9]+</param> diff --git a/docs/schemas/nodedev.rng b/docs/schemas/nodedev.rng index c4f402c..13c5402 100644 --- a/docs/schemas/nodedev.rng +++ b/docs/schemas/nodedev.rng @@ -467,12 +467,6 @@ </element> </define> - <define name='hexuint'> - <data type='string'> - <param name="pattern">(0x)?[0-9a-f]+</param> - </data> - </define> - <define name='mac'> <data type='string'> <param name="pattern">([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}</param> -- 2.2.1

--- src/util/virbitmap.c | 6 ++++++ src/util/virbitmap.h | 3 +-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/util/virbitmap.c b/src/util/virbitmap.c index 05c50e4..d5b0035 100644 --- a/src/util/virbitmap.c +++ b/src/util/virbitmap.c @@ -504,6 +504,12 @@ bool virBitmapEqual(virBitmapPtr b1, virBitmapPtr b2) virBitmapPtr tmp; size_t i; + if (!b1 && !b2) + return true; + + if (!b1 || !b2) + return false; + if (b1->max_bit > b2->max_bit) { tmp = b1; b1 = b2; diff --git a/src/util/virbitmap.h b/src/util/virbitmap.h index 565264c..a347f0a 100644 --- a/src/util/virbitmap.h +++ b/src/util/virbitmap.h @@ -84,8 +84,7 @@ virBitmapPtr virBitmapNewData(void *data, int len) ATTRIBUTE_NONNULL(1); int virBitmapToData(virBitmapPtr bitmap, unsigned char **data, int *dataLen) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); -bool virBitmapEqual(virBitmapPtr b1, virBitmapPtr b2) - ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); +bool virBitmapEqual(virBitmapPtr b1, virBitmapPtr b2); size_t virBitmapSize(virBitmapPtr bitmap) ATTRIBUTE_NONNULL(1); -- 2.2.1

On 22.01.2015 11:53, Peter Krempa wrote:
--- src/util/virbitmap.c | 6 ++++++ src/util/virbitmap.h | 3 +-- 2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/util/virbitmap.c b/src/util/virbitmap.c index 05c50e4..d5b0035 100644 --- a/src/util/virbitmap.c +++ b/src/util/virbitmap.c @@ -504,6 +504,12 @@ bool virBitmapEqual(virBitmapPtr b1, virBitmapPtr b2) virBitmapPtr tmp; size_t i;
+ if (!b1 && !b2) + return true; + + if (!b1 || !b2) + return false; + if (b1->max_bit > b2->max_bit) { tmp = b1; b1 = b2; diff --git a/src/util/virbitmap.h b/src/util/virbitmap.h index 565264c..a347f0a 100644 --- a/src/util/virbitmap.h +++ b/src/util/virbitmap.h @@ -84,8 +84,7 @@ virBitmapPtr virBitmapNewData(void *data, int len) ATTRIBUTE_NONNULL(1); int virBitmapToData(virBitmapPtr bitmap, unsigned char **data, int *dataLen) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-bool virBitmapEqual(virBitmapPtr b1, virBitmapPtr b2) - ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); +bool virBitmapEqual(virBitmapPtr b1, virBitmapPtr b2);
size_t virBitmapSize(virBitmapPtr bitmap) ATTRIBUTE_NONNULL(1);
There are some places in the code that already call this and do the checks you're introducing. Can we drop the duplicity then? Michal

On 22.01.2015 11:53, Peter Krempa wrote:
Few fixes/tweaks that have accumulated in my memory hotplug branch. They should be trivial enough and semantically inert.
Peter Krempa (5): conf: Fix comment mentioning actual type of @multi member of virDevicePCIAddress qemu: command: Honor const-correctnes in qemuBuildNumaArgStr util: json: Make argument of virJSONValueArraySize const schemas: Move definition of 'hexuint' to basictypes util: bitmap: Tolerate NULL bitmaps in virBitmapEqual
docs/schemas/basictypes.rng | 6 ++++++ docs/schemas/nodedev.rng | 6 ------ src/conf/device_conf.h | 2 +- src/qemu/qemu_command.c | 2 +- src/util/virbitmap.c | 6 ++++++ src/util/virbitmap.h | 3 +-- src/util/virjson.c | 2 +- src/util/virjson.h | 2 +- 8 files changed, 17 insertions(+), 12 deletions(-)
ACK to 1-4, and safe for freeze. I'd like to see 5/5 removing more lines. Michal

On Thu, Jan 22, 2015 at 17:11:04 +0100, Michal Privoznik wrote:
On 22.01.2015 11:53, Peter Krempa wrote:
Few fixes/tweaks that have accumulated in my memory hotplug branch. They should be trivial enough and semantically inert.
...
8 files changed, 17 insertions(+), 12 deletions(-)
ACK to 1-4, and safe for freeze.
I've pushed those.
I'd like to see 5/5 removing more lines.
And will add the changes in the next posting. I've done the change as I'm using it in my memory hotplug series but did not go through the code to do the refactor.
Michal
Peter
participants (2)
-
Michal Privoznik
-
Peter Krempa