X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=dss.c;h=237208b7da0a0f3a8f14c2e86c4cbce7cb1fe735;hb=20f8c7d5e2b7985137e89143005f4b7b15ae59d4;hp=7620cfee1733d55ef99baaf956e11089db9b40d6;hpb=6c76799c7334a12926dc1cf0c32670423cbc954f;p=dss.git diff --git a/dss.c b/dss.c index 7620cfe..237208b 100644 --- a/dss.c +++ b/dss.c @@ -548,10 +548,17 @@ static int rename_incomplete_snapshot(int64_t start) { char *old_name; int ret; + int64_t now; + /* + * We don't want the dss_rename() below to fail with EEXIST because the + * last complete snapshot was created (and completed) in the same + * second as this one. + */ + while ((now = get_current_time()) == start) + sleep(1); free(path_to_last_complete_snapshot); - ret = complete_name(start, get_current_time(), - &path_to_last_complete_snapshot); + ret = complete_name(start, now, &path_to_last_complete_snapshot); if (ret < 0) return ret; old_name = incomplete_name(start); @@ -932,8 +939,9 @@ static int check_config(void) return -E_INVALID_NUMBER; } DSS_DEBUG_LOG(("unit interval: %i day(s)\n", conf.unit_interval_arg)); - if (conf.num_intervals_arg <= 0) { - DSS_ERROR_LOG(("bad number of intervals %i\n", conf.num_intervals_arg)); + if (conf.num_intervals_arg <= 0 || conf.num_intervals_arg > 30) { + DSS_ERROR_LOG(("bad number of intervals: %i\n", + conf.num_intervals_arg)); return -E_INVALID_NUMBER; } DSS_DEBUG_LOG(("number of intervals: %i\n", conf.num_intervals_arg)); @@ -1140,7 +1148,7 @@ static void create_rsync_argv(char ***argv, int64_t *num) *argv = dss_malloc((15 + conf.rsync_option_given) * sizeof(char *)); (*argv)[i++] = dss_strdup("rsync"); - (*argv)[i++] = dss_strdup("-aq"); + (*argv)[i++] = dss_strdup("-a"); (*argv)[i++] = dss_strdup("--delete"); for (j = 0; j < conf.rsync_option_given; j++) (*argv)[i++] = dss_strdup(conf.rsync_option_arg[j]); @@ -1434,7 +1442,7 @@ static int com_ls(void) if (s->flags & SS_COMPLETE) d = (s->completion_time - s->creation_time) / 60; dss_msg("%u\t%s\t%3" PRId64 ":%02" PRId64 "\n", s->interval, s->name, d/60, d%60); - }; + } free_snapshot_list(&sl); return 1; }