X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=dss.c;fp=dss.c;h=9390f48c9f8f16a810680b374050ae45ba6349b0;hb=7a6ff706b99f35a3f4f1ee116f49827dbdf15c64;hp=ffbf5004505559cb30d8c1deed25a0ab842a8121;hpb=be3b0326d868aed97fc4224dcbf0266c303d2871;p=dss.git diff --git a/dss.c b/dss.c index ffbf500..9390f48 100644 --- a/dss.c +++ b/dss.c @@ -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;