From: Peter Krempa Date: Thu, 5 Dec 2019 14:57:30 +0000 (+0100) Subject: qemu: block: Introduce qemuBlockNamedNodeDataGetBitmapByName X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=b7f2cd465217e8b070d59eb4165ba08aff0b9a54;p=libvirt.git qemu: block: Introduce qemuBlockNamedNodeDataGetBitmapByName This function looks up a named bitmap for a virStorageSource in the data returned from query-named-block-nodes. Signed-off-by: Peter Krempa Reviewed-by: Eric Blake --- diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c index ada2c52947..629a09b897 100644 --- a/src/qemu/qemu_block.c +++ b/src/qemu/qemu_block.c @@ -2612,3 +2612,35 @@ qemuBlockRemoveImageMetadata(virQEMUDriverPtr driver, return ret; } + + +/** + * qemuBlockNamedNodeDataGetBitmapByName: + * @blockNamedNodeData: hash table returned by qemuMonitorBlockGetNamedNodeData + * @src: disk source to find the bitmap for + * @bitmap: name of the bitmap to find + * + * Looks up a bitmap named @bitmap of the @src image. + */ +qemuBlockNamedNodeDataBitmapPtr +qemuBlockNamedNodeDataGetBitmapByName(virHashTablePtr blockNamedNodeData, + virStorageSourcePtr src, + const char *bitmap) +{ + qemuBlockNamedNodeDataPtr nodedata; + size_t i; + + if (!(nodedata = virHashLookup(blockNamedNodeData, src->nodeformat))) + return NULL; + + for (i = 0; i < nodedata->nbitmaps; i++) { + qemuBlockNamedNodeDataBitmapPtr bitmapdata = nodedata->bitmaps[i]; + + if (STRNEQ(bitmapdata->name, bitmap)) + continue; + + return bitmapdata; + } + + return NULL; +} diff --git a/src/qemu/qemu_block.h b/src/qemu/qemu_block.h index 5854641027..1a38e0eccf 100644 --- a/src/qemu/qemu_block.h +++ b/src/qemu/qemu_block.h @@ -203,3 +203,8 @@ qemuBlockRemoveImageMetadata(virQEMUDriverPtr driver, virDomainObjPtr vm, const char *diskTarget, virStorageSourcePtr src); + +qemuBlockNamedNodeDataBitmapPtr +qemuBlockNamedNodeDataGetBitmapByName(virHashTablePtr blockNamedNodeData, + virStorageSourcePtr src, + const char *bitmap);