diff --git a/src/qemu/qemu_alias.c b/src/qemu/qemu_alias.c index f2635865a439ac59bc785ce9c77568ed2c7a7fc2..28260c92be477aefc3b08f8a8b3409b15e6b32ba 100644 --- a/src/qemu/qemu_alias.c +++ b/src/qemu/qemu_alias.c @@ -29,6 +29,8 @@ #include "virstring.h" #include "network/bridge_driver.h" +#define QEMU_DRIVE_HOST_PREFIX "drive-" + #define VIR_FROM_THIS VIR_FROM_QEMU VIR_LOG_INIT("qemu.qemu_alias"); @@ -476,6 +478,21 @@ qemuAliasFromDisk(const virDomainDiskDef *disk) } +/* qemuAliasDiskDriveSkipPrefix: + * @dev_name: Pointer to a const char string + * + * If the QEMU_DRIVE_HOST_PREFIX exists in the input string, then + * increment the pointer and return it + */ +const char * +qemuAliasDiskDriveSkipPrefix(const char *dev_name) +{ + if (STRPREFIX(dev_name, QEMU_DRIVE_HOST_PREFIX)) + dev_name += strlen(QEMU_DRIVE_HOST_PREFIX); + return dev_name; +} + + /* qemuDomainGetMasterKeyAlias: * * Generate and return the masterKey alias diff --git a/src/qemu/qemu_alias.h b/src/qemu/qemu_alias.h index 5202f734c99d8d07081d9a6d0fb259f9068e2a62..8f6d9a77f6f131fdbc69eea2c8f77ffccf0a4764 100644 --- a/src/qemu/qemu_alias.h +++ b/src/qemu/qemu_alias.h @@ -30,8 +30,6 @@ # include "qemu_domain.h" # include "qemu_domain_address.h" -# define QEMU_DRIVE_HOST_PREFIX "drive-" - int qemuAssignDeviceChrAlias(virDomainDefPtr def, virDomainChrDefPtr chr, ssize_t idx); @@ -69,6 +67,8 @@ int qemuDomainDeviceAliasIndex(const virDomainDeviceInfo *info, char *qemuAliasFromDisk(const virDomainDiskDef *disk); +const char *qemuAliasDiskDriveSkipPrefix(const char *dev_name); + char *qemuDomainGetMasterKeyAlias(void); char *qemuDomainGetSecretAESAlias(const char *srcalias, diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 211b883a1b4dd635a989870e2e7d06be33761226..efc1fb538d130c124435baaaecc91cd99b3240fa 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -4403,8 +4403,7 @@ qemuDomainStorageAlias(const char *device, int depth) { char *alias; - if (STRPREFIX(device, QEMU_DRIVE_HOST_PREFIX)) - device += strlen(QEMU_DRIVE_HOST_PREFIX); + device = qemuAliasDiskDriveSkipPrefix(device); if (!depth) ignore_value(VIR_STRDUP(alias, device)); diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 299526458b2a8a553b0059eb2dad11177c52e541..52830241c543c439e5f236800e50a20c487a370f 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -1800,8 +1800,7 @@ int qemuMonitorJSONGetBlockInfo(qemuMonitorPtr mon, goto cleanup; } - if (STRPREFIX(thisdev, QEMU_DRIVE_HOST_PREFIX)) - thisdev += strlen(QEMU_DRIVE_HOST_PREFIX); + thisdev = qemuAliasDiskDriveSkipPrefix(thisdev); if (VIR_ALLOC(info) < 0) goto cleanup; @@ -4195,8 +4194,7 @@ qemuMonitorJSONParseBlockJobInfo(virHashTablePtr blockJobs, _("entry was missing 'device'")); return -1; } - if (STRPREFIX(device, QEMU_DRIVE_HOST_PREFIX)) - device += strlen(QEMU_DRIVE_HOST_PREFIX); + device = qemuAliasDiskDriveSkipPrefix(device); if (VIR_ALLOC(info) < 0 || virHashAddEntry(blockJobs, device, info) < 0) { diff --git a/src/qemu/qemu_monitor_text.c b/src/qemu/qemu_monitor_text.c index cf2979dab4c6d1f08153b0bececd710e85e4e424..2c31b5298f5c26610ff87560e37fe4a9db9511f2 100644 --- a/src/qemu/qemu_monitor_text.c +++ b/src/qemu/qemu_monitor_text.c @@ -753,8 +753,7 @@ int qemuMonitorTextGetBlockInfo(qemuMonitorPtr mon, p = reply; while (*p) { - if (STRPREFIX(p, QEMU_DRIVE_HOST_PREFIX)) - p += strlen(QEMU_DRIVE_HOST_PREFIX); + p = (char *)qemuAliasDiskDriveSkipPrefix(p); eol = strchr(p, '\n'); if (!eol) @@ -839,7 +838,7 @@ qemuMonitorTextGetAllBlockStatsInfo(qemuMonitorPtr mon, { qemuBlockStatsPtr stats = NULL; char *info = NULL; - char *dev_name; + const char *dev_name; char **lines = NULL; char **values = NULL; char *line; @@ -901,8 +900,7 @@ qemuMonitorTextGetAllBlockStatsInfo(qemuMonitorPtr mon, *line = '\0'; line += 2; - if (STRPREFIX(dev_name, QEMU_DRIVE_HOST_PREFIX)) - dev_name += strlen(QEMU_DRIVE_HOST_PREFIX); + dev_name = qemuAliasDiskDriveSkipPrefix(dev_name); if (!(values = virStringSplit(line, " ", 0))) goto cleanup; diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index b87e305049f4a5bf5e187873557d13139982cf6d..a4935d220ef950f77800b7b969a759b5ffdd0b3d 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -355,8 +355,7 @@ qemuProcessFindDomainDiskByAlias(virDomainObjPtr vm, { size_t i; - if (STRPREFIX(alias, QEMU_DRIVE_HOST_PREFIX)) - alias += strlen(QEMU_DRIVE_HOST_PREFIX); + alias = qemuAliasDiskDriveSkipPrefix(alias); for (i = 0; i < vm->def->ndisks; i++) { virDomainDiskDefPtr disk;