On 10.06.2015 00:19, John Ferlan wrote:
>
https://bugzilla.redhat.com/show_bug.cgi?id=1225694
>
> Check if the disk partition to be wiped is the extended partition, if
> so then disallow it. Do this via changing the wipeVol backend to check
> the volume before passing to the common virStorageBackendVolWipeLocal
>
> Signed-off-by: John Ferlan <jferlan(a)redhat.com>
> ---
> src/storage/storage_backend_disk.c | 20 +++++++++++++++++++-
> 1 file changed, 19 insertions(+), 1 deletion(-)
>
> diff --git a/src/storage/storage_backend_disk.c b/src/storage/storage_backend_disk.c
> index c4bd6fe..a283a86 100644
> --- a/src/storage/storage_backend_disk.c
> +++ b/src/storage/storage_backend_disk.c
> @@ -851,6 +851,24 @@ virStorageBackendDiskBuildVolFrom(virConnectPtr conn,
> }
>
>
> +static int
> +virStorageBackendDiskVolWipe(virConnectPtr conn,
> + virStoragePoolObjPtr pool,
> + virStorageVolDefPtr vol,
> + unsigned int algorithm,
> + unsigned int flags)
> +{
> + if (vol->source.partType != VIR_STORAGE_VOL_DISK_TYPE_EXTENDED)
> + return virStorageBackendVolWipeLocal(conn, pool, vol, algorithm, flags);
> +
> + /* Wiping an extended partition is not support */
> + virReportError(VIR_ERR_NO_SUPPORT,
> + _("cannot wipe extended partition '%s'"),
> + vol->target.path);
> + return -1;
> +}
> +
> +
> virStorageBackend virStorageBackendDisk = {
> .type = VIR_STORAGE_POOL_DISK,
>
> @@ -862,5 +880,5 @@ virStorageBackend virStorageBackendDisk = {
> .buildVolFrom = virStorageBackendDiskBuildVolFrom,
> .uploadVol = virStorageBackendVolUploadLocal,
> .downloadVol = virStorageBackendVolDownloadLocal,
> - .wipeVol = virStorageBackendVolWipeLocal,
> + .wipeVol = virStorageBackendDiskVolWipe,
> };
>
Correct, mangling partition table is not desired. BTW: couldn't
something similar happen with LVM?
To a degree this was taken from what for the logical backend handling of
a sparse logical volume due to metadata overwrite where yes we were
overwriting metadata... I think for the lv's we rely a bit more on lvm
to manage the partition and don't have the same issue about knowing
whether it's a primary, extended, or logical partition.
John