Signed-off-by: Maxim Nestratov <mnestratov(a)virtuozzo.com>
---
src/vz/vz_sdk.c | 19 +++++++++++++++++++
src/vz/vz_utils.c | 5 -----
2 files changed, 19 insertions(+), 5 deletions(-)
diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c
index b5b0197..f27441d 100644
--- a/src/vz/vz_sdk.c
+++ b/src/vz/vz_sdk.c
@@ -590,6 +590,7 @@ prlsdkGetDiskInfo(vzDriverPtr driver,
bool isCt)
{
char *buf = NULL;
+ char *serial = NULL;
PRL_RESULT pret;
PRL_UINT32 emulatedType;
virDomainDeviceDriveAddressPtr address;
@@ -626,6 +627,18 @@ prlsdkGetDiskInfo(vzDriverPtr driver,
if (*buf != '\0' && virDomainDiskSetSource(disk, buf) < 0)
goto cleanup;
+ serial = prlsdkGetStringParamVar(PrlVmDevHd_GetSerialNumber, prldisk);
+ if (serial) {
+ if (virSafeSerialParamValue(serial) < 0)
+ goto cleanup;
+
+ if (*serial == '\0')
+ VIR_FREE(serial);
+ else
+ disk->serial = serial;
+ serial = NULL;
+ }
+
if (prlsdkGetDiskId(prldisk, &disk->bus, &disk->dst) < 0)
goto cleanup;
@@ -643,6 +656,7 @@ prlsdkGetDiskInfo(vzDriverPtr driver,
cleanup:
VIR_FREE(buf);
+ VIR_FREE(serial);
return ret;
}
@@ -3489,6 +3503,11 @@ static int prlsdkConfigureDisk(vzDriverPtr driver,
pret = PrlVmDev_SetIfaceType(sdkdisk, sdkbus);
prlsdkCheckRetGoto(pret, cleanup);
+ if (disk->serial) {
+ pret = PrlVmDevHd_SetSerialNumber(sdkdisk, disk->serial);
+ prlsdkCheckRetGoto(pret, cleanup);
+ }
+
pret = PrlVmDev_SetStackIndex(sdkdisk, idx);
prlsdkCheckRetGoto(pret, cleanup);
diff --git a/src/vz/vz_utils.c b/src/vz/vz_utils.c
index eaf09f2..f68b3a1 100644
--- a/src/vz/vz_utils.c
+++ b/src/vz/vz_utils.c
@@ -323,11 +323,6 @@ vzCheckDiskUnsupportedParams(virDomainDiskDefPtr disk)
return -1;
}
- if (disk->serial) {
- VIR_INFO("%s", _("Setting disk serial number is not "
- "supported by vz driver."));
- }
-
if (disk->wwn) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("Setting disk wwn id is not "
--
2.4.11