diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c index 07bc8ede76..0c9460f678 100644 --- a/src/qemu/qemu_block.c +++ b/src/qemu/qemu_block.c @@ -52,6 +52,54 @@ qemuBlockNodeNameValidate(const char *nn) } +/** + * qemuBlockStorageSourceSetStorageNodename: + * @src: virStorageSource to set the storage nodename + * @nodename: The node name to set (stolen) + * + * Sets @nodename as the storage node name of @src. Using NULL @nodename clears + * the nodename. @src takes ownership of @nodename. + */ +void +qemuBlockStorageSourceSetStorageNodename(virStorageSource *src, + char *nodename) +{ + g_free(src->nodestorage); + src->nodestorage = nodename; +} + + +/** + * qemuBlockStorageSourceGetEffectiveStorageNodename: + * @src: virStorageSource to get the effective nodename of + * + * Gets the nodename that exposes the storage corresponding to @src, without + * the format driver applied. This function always returns a name. + */ +const char * +qemuBlockStorageSourceGetEffectiveStorageNodename(virStorageSource *src) +{ + if (src->sliceStorage && + src->sliceStorage->nodename) + return src->sliceStorage->nodename; + + return src->nodestorage; +} + + +/** + * qemuBlockStorageSourceGetStorageNodename: + * @src: virStorageSource to get the effective nodename of + * + * Gets the nodename corresponding to the real backing storage format layer. + */ +const char * +qemuBlockStorageSourceGetStorageNodename(virStorageSource *src) +{ + return src->nodestorage; +} + + /** * qemuBlockStorageSourceSupportsConcurrentAccess: * @src: disk storage source diff --git a/src/qemu/qemu_block.h b/src/qemu/qemu_block.h index cf5eaf87f3..ecc5711dcd 100644 --- a/src/qemu/qemu_block.h +++ b/src/qemu/qemu_block.h @@ -26,6 +26,17 @@ #include "virjson.h" #include "viruri.h" +void +qemuBlockStorageSourceSetStorageNodename(virStorageSource *src, + char *nodename); + +const char * +qemuBlockStorageSourceGetEffectiveStorageNodename(virStorageSource *src); + +const char * +qemuBlockStorageSourceGetStorageNodename(virStorageSource *src); + + typedef struct qemuBlockNodeNameBackingChainData qemuBlockNodeNameBackingChainData; struct qemuBlockNodeNameBackingChainData { char *qemufilename; /* name of the image from qemu */