[Sheepdog] [PATCH 2/9] collie: fix snapshot delete option

MORITA Kazutaka morita.kazutaka at lab.ntt.co.jp
Sat Jan 1 20:53:13 CET 2011


This patch fixes a regression of a1bf95500c.

You can delete the snapshot vdi with the following command:

  $ collie vdi delete vdiname [-s snapshot_id]

Signed-off-by: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp>
---
 collie/collie.c |   31 +++++++++++++++++++++++++++----
 1 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/collie/collie.c b/collie/collie.c
index e2aa178..743089b 100644
--- a/collie/collie.c
+++ b/collie/collie.c
@@ -163,6 +163,10 @@ struct cluster_cmd_data {
 	int copies;
 } cluster_cmd_data;
 
+struct vdi_cmd_data {
+	int snapshot;
+} vdi_cmd_data;
+
 static int cluster_format(int argc, char **argv)
 {
 	int fd, ret;
@@ -667,7 +671,6 @@ static int vdi_delete(int argc, char **argv)
 	struct sd_vdi_rsp *rsp = (struct sd_vdi_rsp *)&hdr;
 	unsigned rlen, wlen;
 	char vdiname[SD_MAX_VDI_LEN];
-	uint32_t id = ~0;
 
 	fd = connect_to(sdhost, sdport);
 	if (fd < 0)
@@ -679,8 +682,7 @@ static int vdi_delete(int argc, char **argv)
 	wlen = sizeof(vdiname);
 
 	hdr.opcode = SD_OP_DEL_VDI;
-	if (id != ~0)
-		hdr.snapid = id;
+	hdr.snapid = vdi_cmd_data.snapshot;
 	hdr.epoch = node_list_version;
 	hdr.flags = SD_FLAG_CMD_WRITE;
 	hdr.data_length = wlen;
@@ -764,6 +766,24 @@ static struct subcommand vdi_cmd[] = {
 	{NULL,},
 };
 
+static struct option vdi_long_options[] =
+{
+	COMMON_LONG_OPTIONS
+	{"snapshot", required_argument, NULL, 's'},
+	{NULL, 0, NULL, 0},
+};
+
+static int vdi_parser(int ch, char *opt)
+{
+	switch (ch) {
+	case 's':
+		vdi_cmd_data.snapshot = atoi(opt);
+		break;
+	}
+
+	return 0;
+}
+
 static int cluster_info(int argc, char **argv)
 {
 	int i, fd, ret;
@@ -865,7 +885,10 @@ static struct {
 	int (*parser)(int, char *);
 	void (*help)(void);
 } commands[] = {
-	{"vdi", vdi_cmd,},
+	{"vdi", vdi_cmd,
+	 vdi_long_options,
+	 COMMON_SHORT_OPTIONS "s:",
+	 vdi_parser,},
 	{"node", node_cmd,},
 	{"cluster", cluster_cmd,
 	 cluster_long_options,
-- 
1.5.6.5




More information about the sheepdog mailing list