From 3535092f3a298f900c3c3b6948846b00754cfff3 Mon Sep 17 00:00:00 2001 From: David Allan Date: Mon, 1 Mar 2010 22:10:40 -0500 Subject: [PATCH] Virsh support for vol wiping --- tools/virsh.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/tools/virsh.c b/tools/virsh.c index aa85ee65e4..97145eb7d2 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -5270,6 +5270,47 @@ cmdVolDelete(vshControl *ctl, const vshCmd *cmd) } +/* + * "vol-wipe" command + */ +static const vshCmdInfo info_vol_wipe[] = { + {"help", N_("wipe a vol")}, + {"desc", N_("Ensure data previously on a volume is not accessible to future reads")}, + {NULL, NULL} +}; + +static const vshCmdOptDef opts_vol_wipe[] = { + {"pool", VSH_OT_STRING, 0, N_("pool name or uuid")}, + {"vol", VSH_OT_DATA, VSH_OFLAG_REQ, N_("vol name, key or path")}, + {NULL, 0, 0, NULL} +}; + +static int +cmdVolWipe(vshControl *ctl, const vshCmd *cmd) +{ + virStorageVolPtr vol; + int ret = TRUE; + char *name; + + if (!vshConnectionUsability(ctl, ctl->conn, TRUE)) + return FALSE; + + if (!(vol = vshCommandOptVol(ctl, cmd, "vol", "pool", &name))) { + return FALSE; + } + + if (virStorageVolWipe(vol, 0) == 0) { + vshPrint(ctl, _("Vol %s wiped\n"), name); + } else { + vshError(ctl, _("Failed to wipe vol %s"), name); + ret = FALSE; + } + + virStorageVolFree(vol); + return ret; +} + + /* * "vol-info" command */ @@ -7809,6 +7850,7 @@ static const vshCmdDef commands[] = { {"vol-create-as", cmdVolCreateAs, opts_vol_create_as, info_vol_create_as}, {"vol-clone", cmdVolClone, opts_vol_clone, info_vol_clone}, {"vol-delete", cmdVolDelete, opts_vol_delete, info_vol_delete}, + {"vol-wipe", cmdVolWipe, opts_vol_wipe, info_vol_wipe}, {"vol-dumpxml", cmdVolDumpXML, opts_vol_dumpxml, info_vol_dumpxml}, {"vol-info", cmdVolInfo, opts_vol_info, info_vol_info}, {"vol-list", cmdVolList, opts_vol_list, info_vol_list}, -- 2.47.2