]> git.tuebingen.mpg.de Git - dss.git/commitdiff
Merge branch 'master' into next
authorAndre Noll <maan@tuebingen.mpg.de>
Mon, 11 Feb 2019 19:58:09 +0000 (20:58 +0100)
committerAndre Noll <maan@tuebingen.mpg.de>
Mon, 11 Feb 2019 19:58:09 +0000 (20:58 +0100)
* master:
  Remove stale comment.
  Improve comment of snapshot_currently_being_removed.

1  2 
dss.c

diff --combined dss.c
index f8bbb99a987b51943a4699af51b69480bc0b92aa,217f22e36f8d1b36f65874a9336635946376cdb5..3a5f68516cc3b32215cb26eb13a6bc7eaf777132
--- 1/dss.c
--- 2/dss.c
+++ b/dss.c
@@@ -81,7 -81,7 +81,7 @@@ static int64_t next_snapshot_time
  static struct timeval next_removal_check;
  /** Creation time of the snapshot currently being created. */
  static int64_t current_snapshot_creation_time;
- /** The snapshot currently being removed. */
+ /* Set by the pre-rm hook, cleared by handle_remove_exit(). */
  struct snapshot *snapshot_currently_being_removed;
  /** Needed by the post-create hook. */
  static char *path_to_last_complete_snapshot;
@@@ -574,9 -574,6 +574,6 @@@ static int is_reference_snapshot(struc
        return strcmp(s->name, name_of_reference_snapshot)? 0 : 1;
  }
  
- /*
-  * return: 0: no redundant snapshots, 1: rm process started, negative: error
-  */
  static struct snapshot *find_redundant_snapshot(struct snapshot_list *sl)
  {
        int i, interval;
@@@ -1417,35 -1414,14 +1414,35 @@@ static void create_rsync_argv(char ***a
        } else
                DSS_INFO_LOG(("no suitable reference snapshot found\n"));
        logname = dss_logname();
 -      if (use_rsync_locally(logname))
 -              (*argv)[i++] = dss_strdup(OPT_STRING_VAL(DSS, SOURCE_DIR));
 -      else
 -              (*argv)[i++] = make_message("%s@%s:%s/",
 -                      OPT_GIVEN(DSS, REMOTE_USER)?
 -                              OPT_STRING_VAL(DSS, REMOTE_USER) : logname,
 -                      OPT_STRING_VAL(DSS, REMOTE_HOST),
 -                      OPT_STRING_VAL(DSS, SOURCE_DIR));
 +      N = OPT_GIVEN(DSS, SOURCE_DIR);
 +      if (use_rsync_locally(logname)) {
 +              for (j = 0; j < N; j++)
 +                      (*argv)[i++] = dss_strdup(lls_string_val(j,
 +                              OPT_RESULT(DSS, SOURCE_DIR)));
 +      } else {
 +              /*
 +               * dss-1.0 and earlier did not support multiple source
 +               * directories.  These versions appended a slash to the end of
 +               * the source directory to make sure that only the contents of
 +               * the single source directory, but not the directory itself,
 +               * are copied to the destination. For multiple source
 +               * directories, however, this is not a good idea because the
 +               * source directories may well contain identical file names,
 +               * which would then be copied to the same location on the
 +               * destination, overwriting each other. Moreover, we want the
 +               * directory on the destination match the source. To preserve
 +               * the old behaviour, we thus have to special-case N=1.
 +               */
 +              for (j = 0; j < N; j++) {
 +                      (*argv)[i++] = make_message("%s@%s:%s%s",
 +                              OPT_GIVEN(DSS, REMOTE_USER)?
 +                                      OPT_STRING_VAL(DSS, REMOTE_USER) : logname,
 +                              OPT_STRING_VAL(DSS, REMOTE_HOST),
 +                              lls_string_val(j, OPT_RESULT(DSS, SOURCE_DIR)),
 +                              N == 1? "/" : ""
 +                      );
 +              }
 +      }
        free(logname);
        *num = get_current_time();
        (*argv)[i++] = incomplete_name(*num);