]> git.neil.brown.name Git - lafs-utils.git/commitdiff
lafs: add write_checkpoint
authorNeilBrown <neilb@suse.de>
Mon, 14 Mar 2011 01:22:17 +0000 (12:22 +1100)
committerNeilBrown <neilb@suse.de>
Mon, 14 Mar 2011 01:22:17 +0000 (12:22 +1100)
Signed-off-by: NeilBrown <neilb@suse.de>
tools/lafs.c

index 4cb06f204d2012be53fe073752460a07b012211b..efa6e8888fd1b617696effac23c641c517b9f913 100644 (file)
@@ -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}