struct snapshot *s = NULL;
struct snapshot_list sl;
- current_snapshot_creation_time = 0;
dss_get_snapshot_list(&sl);
FOR_EACH_SNAPSHOT(s, i, &sl) {
if (!(s->flags & SS_COMPLETE))
{
int64_t now = get_current_time();
- assert(snapshot_creation_status == HS_READY);
if (!next_snapshot_time_is_valid())
next_snapshot_time = compute_next_snapshot_time();
if (next_snapshot_time <= now) {
case HS_POST_RUNNING:
continue;
case HS_PRE_SUCCESS:
- free_rsync_argv(rsync_argv);
- create_rsync_argv(&rsync_argv, ¤t_snapshot_creation_time);
+ if (!name_of_reference_snapshot) {
+ free_rsync_argv(rsync_argv);
+ create_rsync_argv(&rsync_argv, ¤t_snapshot_creation_time);
+ }
/* fall through */
case HS_NEEDS_RESTART:
+ if (!next_snapshot_is_due())
+ continue;
ret = create_snapshot(rsync_argv);
if (ret < 0)
goto out;