mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 21:55:25 +00:00
storage: Adjust fix virStorageBackendVolWipeLocal switch
Use the cast of (virStorageVolWipeAlgorithm) adding the missing case:'s (VIR_STORAGE_VOL_WIPE_ALG_ZERO and VIR_STORAGE_VOL_WIPE_ALG_LAST). Additionally, the old code would also still run the SCRUB command on default since it didn't go to cleanup when a invalid flag was supplied. We now go to cleanup and exit if a invalid flag would be provided. Signed-off-by: Wido den Hollander <wido@widodh.nl>
This commit is contained in:
parent
680030c42b
commit
69535c6124
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* storage_backend.c: internal storage driver backend contract
|
||||
*
|
||||
* Copyright (C) 2007-2014 Red Hat, Inc.
|
||||
* Copyright (C) 2007-2016 Red Hat, Inc.
|
||||
* Copyright (C) 2007-2008 Daniel P. Berrange
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
@ -2053,6 +2053,7 @@ virStorageBackendVolWipeLocal(virConnectPtr conn ATTRIBUTE_UNUSED,
|
||||
unsigned int flags)
|
||||
{
|
||||
int ret = -1, fd = -1;
|
||||
const char *alg_char = NULL;
|
||||
struct stat st;
|
||||
virCommandPtr cmd = NULL;
|
||||
|
||||
@ -2076,38 +2077,42 @@ virStorageBackendVolWipeLocal(virConnectPtr conn ATTRIBUTE_UNUSED,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
switch ((virStorageVolWipeAlgorithm) algorithm) {
|
||||
case VIR_STORAGE_VOL_WIPE_ALG_ZERO:
|
||||
alg_char = "zero";
|
||||
break;
|
||||
case VIR_STORAGE_VOL_WIPE_ALG_NNSA:
|
||||
alg_char = "nnsa";
|
||||
break;
|
||||
case VIR_STORAGE_VOL_WIPE_ALG_DOD:
|
||||
alg_char = "dod";
|
||||
break;
|
||||
case VIR_STORAGE_VOL_WIPE_ALG_BSI:
|
||||
alg_char = "bsi";
|
||||
break;
|
||||
case VIR_STORAGE_VOL_WIPE_ALG_GUTMANN:
|
||||
alg_char = "gutmann";
|
||||
break;
|
||||
case VIR_STORAGE_VOL_WIPE_ALG_SCHNEIER:
|
||||
alg_char = "schneier";
|
||||
break;
|
||||
case VIR_STORAGE_VOL_WIPE_ALG_PFITZNER7:
|
||||
alg_char = "pfitzner7";
|
||||
break;
|
||||
case VIR_STORAGE_VOL_WIPE_ALG_PFITZNER33:
|
||||
alg_char = "pfitzner33";
|
||||
break;
|
||||
case VIR_STORAGE_VOL_WIPE_ALG_RANDOM:
|
||||
alg_char = "random";
|
||||
break;
|
||||
case VIR_STORAGE_VOL_WIPE_ALG_LAST:
|
||||
virReportError(VIR_ERR_INVALID_ARG,
|
||||
_("unsupported algorithm %d"),
|
||||
algorithm);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (algorithm != VIR_STORAGE_VOL_WIPE_ALG_ZERO) {
|
||||
const char *alg_char ATTRIBUTE_UNUSED = NULL;
|
||||
switch (algorithm) {
|
||||
case VIR_STORAGE_VOL_WIPE_ALG_NNSA:
|
||||
alg_char = "nnsa";
|
||||
break;
|
||||
case VIR_STORAGE_VOL_WIPE_ALG_DOD:
|
||||
alg_char = "dod";
|
||||
break;
|
||||
case VIR_STORAGE_VOL_WIPE_ALG_BSI:
|
||||
alg_char = "bsi";
|
||||
break;
|
||||
case VIR_STORAGE_VOL_WIPE_ALG_GUTMANN:
|
||||
alg_char = "gutmann";
|
||||
break;
|
||||
case VIR_STORAGE_VOL_WIPE_ALG_SCHNEIER:
|
||||
alg_char = "schneier";
|
||||
break;
|
||||
case VIR_STORAGE_VOL_WIPE_ALG_PFITZNER7:
|
||||
alg_char = "pfitzner7";
|
||||
break;
|
||||
case VIR_STORAGE_VOL_WIPE_ALG_PFITZNER33:
|
||||
alg_char = "pfitzner33";
|
||||
break;
|
||||
case VIR_STORAGE_VOL_WIPE_ALG_RANDOM:
|
||||
alg_char = "random";
|
||||
break;
|
||||
default:
|
||||
virReportError(VIR_ERR_INVALID_ARG,
|
||||
_("unsupported algorithm %d"),
|
||||
algorithm);
|
||||
}
|
||||
cmd = virCommandNew(SCRUB);
|
||||
virCommandAddArgList(cmd, "-f", "-p", alg_char,
|
||||
vol->target.path, NULL);
|
||||
|
Loading…
Reference in New Issue
Block a user