From e42e2b783c8bfd65fdcc5007b13cff54c8e8d273 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Mon, 14 Mar 2011 12:22:17 +1100 Subject: [PATCH] lafs: add write_checkpoint Signed-off-by: NeilBrown --- tools/lafs.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) 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} -- 2.39.5