]> git.tuebingen.mpg.de Git - dss.git/blobdiff - dss.c
Fix some typos.
[dss.git] / dss.c
diff --git a/dss.c b/dss.c
index cee49d68885d88abc8af991647905fd6c91f354d..3bcf60d4ba39d083f27bd26cb85998bb7a6eff69 100644 (file)
--- a/dss.c
+++ b/dss.c
@@ -185,8 +185,8 @@ static int next_snapshot_is_due(void)
                goto out;
        }
 
-       tv_divide(wanted, &diff, &tmp); /* sleep time betweeen two snapshots */
-       diff.tv_sec = s->completion_time; /* completion time of the the latest snaphot */
+       tv_divide(wanted, &diff, &tmp); /* sleep time between two snapshots */
+       diff.tv_sec = s->completion_time; /* completion time of the latest snapshot */
        diff.tv_usec = 0;
        tv_add(&diff, &tmp, &next_snapshot_time);
        ret = (tv_diff(&now, &next_snapshot_time, &diff) < 0)? 0 : 1;
@@ -367,6 +367,7 @@ static int remove_outdated_snapshot(struct snapshot_list *sl)
 
 static int remove_oldest_snapshot(struct snapshot_list *sl)
 {
+       int ret;
        struct snapshot *s = get_oldest_snapshot(sl);
 
        if (!s) /* no snapshot found */
@@ -374,7 +375,10 @@ static int remove_oldest_snapshot(struct snapshot_list *sl)
        DSS_INFO_LOG("oldest snapshot: %s\n", s->name);
        if (snapshot_is_being_created(s))
                return 0;
-       return pre_remove_hook(s, "oldest");
+       ret = pre_remove_hook(s, "oldest");
+       if (ret < 0)
+               return ret;
+       return 1;
 }
 
 static int rename_incomplete_snapshot(int64_t start)
@@ -568,7 +572,10 @@ static int handle_rm_exit(int status)
                snapshot_removal_status = HS_READY;
                return -E_BAD_EXIT_CODE;
        }
-       snapshot_removal_status = HS_SUCCESS;
+       if (conf.post_remove_hook_given)
+               snapshot_removal_status = HS_SUCCESS;
+       else
+               snapshot_removal_status = HS_READY;
        return 1;
 }
 
@@ -634,7 +641,12 @@ static int handle_rsync_exit(int status)
                goto out;
        }
        es = WEXITSTATUS(status);
-       if (es == 13) { /* Errors with program diagnostics */
+       /*
+        * Restart rsync on non-fatal errors:
+        * 12: Error in rsync protocol data stream
+        * 13: Errors with program diagnostics
+        */
+       if (es == 12 || es == 13) {
                DSS_WARNING_LOG("rsync process %d returned %d -- restarting\n",
                        (int)create_pid, es);
                snapshot_creation_status = HS_NEEDS_RESTART;