[libvirt] [PATCH] storage: Disallow wiping an extended disk partition
John Ferlan
jferlan at redhat.com
Mon Jun 15 11:48:57 UTC 2015
On 06/15/2015 06:12 AM, Michal Privoznik wrote:
> 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 at 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
More information about the libvir-list
mailing list