]> git.tuebingen.mpg.de Git - dss.git/blobdiff - dss.c
Merge branch 'master' into rm_hook
[dss.git] / dss.c
diff --git a/dss.c b/dss.c
index 2660348254d0fca329b2ac24d43df245fb3364a7..2a0fb9edce9cb6af9ee9eecc880f9148bb2546bc 100644 (file)
--- a/dss.c
+++ b/dss.c
@@ -369,7 +369,7 @@ static int pre_create_hook(void)
                snapshot_creation_status = SCS_PRE_HOOK_SUCCESS;
                return 0;
        }
-       DSS_NOTICE_LOG("executing %s\n", conf.pre_create_hook_arg);
+       DSS_DEBUG_LOG("executing %s\n", conf.pre_create_hook_arg);
        ret = dss_exec_cmdline_pid(&create_pid,
                conf.pre_create_hook_arg, fds);
        if (ret < 0)
@@ -534,6 +534,7 @@ out:
 static int handle_pre_create_hook_exit(int status)
 {
        int es, ret;
+       static int warn_count;
 
        if (!WIFEXITED(status)) {
                snapshot_creation_status = SCS_READY;
@@ -543,11 +544,18 @@ static int handle_pre_create_hook_exit(int status)
        }
        es = WEXITSTATUS(status);
        if (es) {
+               if (!warn_count--) {
+                       DSS_NOTICE_LOG("pre_create_hook %s returned %d\n",
+                               conf.pre_create_hook_arg, es);
+                       DSS_NOTICE_LOG("deferring snapshot creation...\n");
+                       warn_count = 60; /* warn only once per hour */
+               }
                snapshot_creation_status = SCS_READY;
                compute_next_snapshot_time();
-               ret = -E_BAD_EXIT_CODE;
+               ret = 0;
                goto out;
        }
+       warn_count = 0;
        snapshot_creation_status = SCS_PRE_HOOK_SUCCESS;
        ret = 1;
 out: