From: NeilBrown Date: Mon, 14 Mar 2011 01:22:17 +0000 (+1100) Subject: lafs: add write_checkpoint X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=e42e2b783c8bfd65fdcc5007b13cff54c8e8d273;p=lafs-utils.git lafs: add write_checkpoint Signed-off-by: NeilBrown --- diff --git a/tools/lafs.c b/tools/lafs.c index 4cb06f2..efa6e88 100644 --- a/tools/lafs.c +++ b/tools/lafs.c @@ -1014,6 +1014,26 @@ static void c_write_state(struct state *st, void **args) (unsigned long long) st->lafs->seq); } +/****** WRITE_CHECKPOINT ******/ +static char help_write_checkpoint[] = "Write a checkpoint with all committed blocks"; +static struct args args_write_checkpoint[] = { + TERMINAL_ARG +}; +static void c_write_checkpoint(struct state *st, void **args) +{ + if (st->lafs->blocksize == 0) + printf("write checkpoint: filesystem is not initialised\n"); + else if (st->lafs->devs == NULL) + printf("write checkpoint: No devices exist to write to\n"); + else if (st->lafs->free_head == st->lafs->free_tail) + printf("write checkpoint: No free segments - try find_free\n"); + else if (lafs_checkpoint(st->lafs)) + printf("write state: Error writing checkpoint\n"); + else if (st->verbose) + printf("Checkpoint written: seq now %llu\n", + (unsigned long long) st->lafs->seq); +} + /****** STORE ******/ static char help_store[] = "Create a file in the LaFS from an external file"; static struct args args_store[] = { @@ -1045,6 +1065,7 @@ static struct cmd lafs_cmds[] = { CMD(quit), CMD(reset), CMD(store), + CMD(write_checkpoint), CMD(write_dev), CMD(write_state), { NULL, NULL, NULL, NULL}