Improve comment of snapshot_currently_being_removed.
[dss.git] / dss.c
diff --git a/dss.c b/dss.c
index a782a2e..c2aef36 100644 (file)
--- a/dss.c
+++ b/dss.c
@@ -81,7 +81,7 @@ static int64_t next_snapshot_time;
 static struct timeval next_removal_check;
 /** Creation time of the snapshot currently being created. */
 static int64_t current_snapshot_creation_time;
-/** The snapshot currently being removed. */
+/* Set by the pre-rm hook, cleared by handle_remove_exit(). */
 struct snapshot *snapshot_currently_being_removed;
 /** Needed by the post-create hook. */
 static char *path_to_last_complete_snapshot;
@@ -158,7 +158,7 @@ static void dump_dss_config(const char *msg)
        fprintf(log, "\n*** internal state ***\n\n");
        fprintf(log,
                "pid: %d\n"
-               "logile: %s\n"
+               "logfile: %s\n"
                "snapshot_currently_being_removed: %s\n"
                "path_to_last_complete_snapshot: %s\n"
                "reference_snapshot: %s\n"
@@ -413,7 +413,8 @@ static void dss_get_snapshot_list(struct snapshot_list *sl)
 static int64_t compute_next_snapshot_time(void)
 {
        int64_t x = 0, now = get_current_time(), unit_interval
-               = 24 * 3600 * OPT_UINT32_VAL(DSS, UNIT_INTERVAL), ret;
+               = 24 * 3600 * OPT_UINT32_VAL(DSS, UNIT_INTERVAL), ret,
+               last_completion_time;
        unsigned wanted = desired_number_of_snapshots(0,
                OPT_UINT32_VAL(DSS, NUM_INTERVALS)),
                num_complete = 0;
@@ -427,6 +428,7 @@ static int64_t compute_next_snapshot_time(void)
                        continue;
                num_complete++;
                x += s->completion_time - s->creation_time;
+               last_completion_time = s->completion_time;
        }
        assert(x >= 0);
 
@@ -436,7 +438,7 @@ static int64_t compute_next_snapshot_time(void)
        x /= num_complete; /* avg time to create one snapshot */
        if (unit_interval < x * wanted) /* oops, no sleep at all */
                goto out;
-       ret = s->completion_time + unit_interval / wanted - x;
+       ret = last_completion_time + unit_interval / wanted - x;
 out:
        free_snapshot_list(&sl);
        return ret;
@@ -1299,9 +1301,7 @@ static int handle_signal(void)
        switch (sig) {
        case SIGINT:
        case SIGTERM:
-               kill_children();
-               ret = -E_SIGNAL;
-               break;
+               return -E_SIGNAL;
        case SIGHUP:
                ret = handle_sighup();
                break;
@@ -1448,6 +1448,7 @@ static int create_snapshot(char **argv)
 {
        int ret;
 
+       assert(argv);
        ret = rename_resume_snap(current_snapshot_creation_time);
        if (ret < 0)
                return ret;
@@ -1777,7 +1778,7 @@ static void handle_version_and_help(void)
        else if (OPT_GIVEN(DSS, HELP))
                txt = lls_short_help(CMD_PTR(DSS));
        else if (OPT_GIVEN(DSS, VERSION))
-               txt = dss_strdup(VERSION_STRING);
+               txt = make_message("%s\n", VERSION_STRING);
        else
                return;
        printf("%s", txt);