From: John Ferlan Date: Fri, 13 Jan 2017 00:29:40 +0000 (-0500) Subject: storage: Alter logic when both BLKID and PARTED unavailable X-Git-Tag: v3.0.0-rc2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d1f5dfc416b28793c454b3204600bc9ad944e473;p=thirdparty%2Flibvirt.git storage: Alter logic when both BLKID and PARTED unavailable If neither BLKID or PARTED is available and we're not writing, then just return 0 which allows the underlying storage pool to generate a failure. If both are unavailable and we're writing, then generate a more generic error message. --- diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c index 18433e9c7e..cf7e68a5cd 100644 --- a/src/storage/storage_backend.c +++ b/src/storage/storage_backend.c @@ -2842,9 +2842,6 @@ virStorageBackendBLKIDFindEmpty(const char *device ATTRIBUTE_UNUSED, const char *format ATTRIBUTE_UNUSED, bool writelabel ATTRIBUTE_UNUSED) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("probing for filesystems is unsupported " - "by this build")); return -2; } @@ -2868,11 +2865,10 @@ virStorageBackendPARTEDValidLabel(const char *device ATTRIBUTE_UNUSED, const char *format ATTRIBUTE_UNUSED, bool writelabel ATTRIBUTE_UNUSED) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("PARTED is unsupported by this build")); - return -1; + return -2; } + #endif /* #if WITH_STORAGE_DISK */ @@ -2885,7 +2881,9 @@ virStorageBackendPARTEDValidLabel(const char *device ATTRIBUTE_UNUSED, * BLKID API if available. * * Returns true if the probe deems the device has nothing valid on it - * and returns false if the probe finds something + * or when we cannot check and we're not writing the label. + * + * Returns false if the probe finds something */ bool virStorageBackendDeviceIsEmpty(const char *devpath, @@ -2898,5 +2896,15 @@ virStorageBackendDeviceIsEmpty(const char *devpath, writelabel)) == -2) ret = virStorageBackendPARTEDValidLabel(devpath, format, writelabel); + if (ret == -2 && !writelabel) + ret = 0; + + if (ret == -2) { + virReportError(VIR_ERR_OPERATION_INVALID, + _("Unable to probe '%s' for existing data, " + "forced overwrite is necessary"), + devpath); + } + return ret == 0; }