[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