X-Git-Url: https://mattmccutchen.net/rsync/rsync-patches.git/blobdiff_plain/963ca80882dea2131e78563fa59e3e0e7c70c195..c1ff70aa47e11c5b37634479a0facee775a7b6d9:/sparse-block.diff diff --git a/sparse-block.diff b/sparse-block.diff index aa11420..b82df27 100644 --- a/sparse-block.diff +++ b/sparse-block.diff @@ -18,23 +18,24 @@ To use this patch, run these commands for a successful build: ./configure (optional if already run) make +based-on: a01e3b490eb36ccf9e704840e1b6683dab867550 diff --git a/fileio.c b/fileio.c --- a/fileio.c +++ b/fileio.c -@@ -26,6 +26,7 @@ +@@ -27,6 +27,7 @@ #endif extern int sparse_files; -+extern long sparse_files_block_size; ++extern int sparse_files_block_size; static char last_byte; - static size_t sparse_seek = 0; -@@ -115,7 +116,7 @@ int write_file(int f,char *buf,size_t len) + static OFF_T sparse_seek = 0; +@@ -116,7 +117,7 @@ int write_file(int f, char *buf, int len) while (len > 0) { int r1; if (sparse_files > 0) { - int len1 = MIN(len, SPARSE_WRITE_SIZE); -+ int len1 = MIN(len, (size_t)sparse_files_block_size); ++ int len1 = MIN(len, sparse_files_block_size); r1 = write_sparse(f, buf, len1); } else { if (!wf_writeBuf) { @@ -49,7 +50,7 @@ diff --git a/options.c b/options.c int do_compression = 0; int def_compress_level = Z_DEFAULT_COMPRESSION; int am_root = 0; /* 0 = normal, 1 = root, 2 = --super, -1 = --fake-super */ -@@ -358,6 +359,7 @@ void usage(enum logcode F) +@@ -704,6 +705,7 @@ void usage(enum logcode F) rprintf(F," --fake-super store/recover privileged attrs using xattrs\n"); #endif rprintf(F," -S, --sparse handle sparse files efficiently\n"); @@ -57,7 +58,7 @@ diff --git a/options.c b/options.c rprintf(F," -n, --dry-run perform a trial run with no changes made\n"); rprintf(F," -W, --whole-file copy files whole (without delta-xfer algorithm)\n"); rprintf(F," -x, --one-file-system don't cross filesystem boundaries\n"); -@@ -542,6 +544,7 @@ static struct poptOption long_options[] = { +@@ -900,6 +902,7 @@ static struct poptOption long_options[] = { {"sparse", 'S', POPT_ARG_VAL, &sparse_files, 1, 0, 0 }, {"no-sparse", 0, POPT_ARG_VAL, &sparse_files, 0, 0, 0 }, {"no-S", 0, POPT_ARG_VAL, &sparse_files, 0, 0, 0 }, @@ -65,7 +66,7 @@ diff --git a/options.c b/options.c {"inplace", 0, POPT_ARG_VAL, &inplace, 1, 0, 0 }, {"no-inplace", 0, POPT_ARG_VAL, &inplace, 0, 0, 0 }, {"append", 0, POPT_ARG_NONE, 0, OPT_APPEND, 0, 0 }, -@@ -1900,6 +1903,12 @@ void server_options(char **args, int *argc_p) +@@ -2468,6 +2471,12 @@ void server_options(char **args, int *argc_p) args[ac++] = arg; } @@ -81,7 +82,7 @@ diff --git a/options.c b/options.c diff --git a/rsync.yo b/rsync.yo --- a/rsync.yo +++ b/rsync.yo -@@ -352,6 +352,7 @@ to the detailed description below for a complete description. verb( +@@ -359,6 +359,7 @@ to the detailed description below for a complete description. verb( --super receiver attempts super-user activities --fake-super store/recover privileged attrs using xattrs -S, --sparse handle sparse files efficiently @@ -89,9 +90,9 @@ diff --git a/rsync.yo b/rsync.yo -n, --dry-run perform a trial run with no changes made -W, --whole-file copy files whole (w/o delta-xfer algorithm) -x, --one-file-system don't cross filesystem boundaries -@@ -1049,6 +1050,15 @@ NOTE: Don't use this option when the destination is a Solaris "tmpfs" - filesystem. It doesn't seem to handle seeks over null regions - correctly and ends up corrupting the files. +@@ -1127,6 +1128,15 @@ NOTE: Don't use this option when the destination is a Solaris "tmpfs" + filesystem. It seems to have problems seeking over null regions, + and ends up corrupting the files. +dit(bf(--sparse-block=SIZE)) Change the block size used to handle sparse files +to SIZE bytes. This option only has an effect if the bf(--sparse) (bf(-S))