[SCM] The rsync repository. - branch b3.0.x updated
Rsync CVS commit messages
rsync-cvs at lists.samba.org
Sat Dec 18 14:06:37 MST 2010
The branch, b3.0.x has been updated
via 58ab320 Optimize --inplace chunck search to avoid a non-aligned search.
via 00cde65 Mention seek effect of an unmoved --inplace chunk.
via e6ba6e1 Improve description of --chmod example.
from efad2e8 Fix crash when --backup-dir is excessively long.
;a=shortlog;h=b3.0.x
- Log -----------------------------------------------------------------
commit 58ab32037daaa1012e5b87580058ca1a6df4ecda
Author: Wayne Davison <wayned at samba.org>
Date: Sat Dec 18 08:27:03 2010 -0800
Optimize --inplace chunck search to avoid a non-aligned search.
commit 00cde6582c82d590895ca86bf1a2dc9a292d6d38
Author: Wayne Davison <wayned at samba.org>
Date: Sat Dec 18 08:17:03 2010 -0800
Mention seek effect of an unmoved --inplace chunk.
commit e6ba6e1107b03ffef6ec87e555a84fae614f9266
Author: Wayne Davison <wayned at samba.org>
Date: Sat Dec 18 08:13:52 2010 -0800
Improve description of --chmod example.
-----------------------------------------------------------------------
Summary of changes:
match.c | 39 ++++++++++++++++++++-------------------
receiver.c | 5 +++--
rsync.yo | 5 ++++-
3 files changed, 27 insertions(+), 22 deletions(-)
Changeset truncated at 500 lines:
diff --git a/match.c b/match.c
index 45c512c..b211077 100644
--- a/match.c
+++ b/match.c
@@ -141,7 +141,7 @@ static void matched(int f, struct sum_struct *s, struct map_struct *buf,
static void hash_search(int f,struct sum_struct *s,
struct map_struct *buf, OFF_T len)
{
- OFF_T offset, end;
+ OFF_T offset, aligned_offset, end;
int32 k, want_i, backup;
char sum2[SUM_LENGTH];
uint32 s1, s2, sum;
@@ -167,7 +167,7 @@ static void hash_search(int f,struct sum_struct *s,
if (verbose > 3)
rprintf(FINFO, "sum=%.8x k=%ld\n", sum, (long)k);
- offset = 0;
+ offset = aligned_offset = 0;
end = len + 1 - s->sums[s->count-1].len;
@@ -232,24 +232,26 @@ static void hash_search(int f,struct sum_struct *s,
/* When updating in-place, the best possible match is
* one with an identical offset, so we prefer that over
- * the following want_i optimization. */
+ * the adjacent want_i optimization. */
if (updating_basis_file) {
- int32 i2;
- for (i2 = i; i2 >= 0; i2 = s->sums[i2].chain) {
- if (s->sums[i2].offset != offset)
- continue;
- if (i2 != i) {
- if (sum != s->sums[i2].sum1)
- break;
- if (memcmp(sum2, s->sums[i2].sum2,
- s->s2length) != 0)
- break;
- i = i2;
+ /* All the generator's chunks start at blength boundaries. */
+ while (aligned_offset < offset)
+ aligned_offset += s->blength;
+ if (offset == aligned_offset) {
+ int32 i2;
+ for (i2 = i; i2 >= 0; i2 = s->sums[i2].chain) {
+ if (s->sums[i2].offset != offset)
+ continue;
+ if (i2 != i) {
+ if (sum != s->sums[i2].sum1
+ || memcmp(sum2, s->sums[i2].sum2, s->s2length) != 0)
+ break;
+ i = i2;
+ }
+ /* This chunk remained in the same spot in the old and new file. */
+ s->sums[i].flags |= SUMFLG_SAME_OFFSET;
+ want_i = i;
}
- /* This chunk was at the same offset on
- * both the sender and the receiver. */
- s->sums[i].flags |= SUMFLG_SAME_OFFSET;
- goto set_want_i;
}
}
@@ -264,7 +266,6 @@ static void hash_search(int f,struct sum_struct *s,
* will be happy */
i = want_i;
}
- set_want_i:
want_i = i + 1;
matched(f,s,buf,offset,i);
diff --git a/receiver.c b/receiver.c
index ea11ed5..467db5e 100644
--- a/receiver.c
+++ b/receiver.c
@@ -249,8 +249,9 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
if (verbose > 3) {
rprintf(FINFO,
- "chunk[%d] of size %ld at %.0f offset=%.0f\n",
- i, (long)len, (double)offset2, (double)offset);
+ "chunk[%d] of size %ld at %.0f offset=%.0f%s\n",
+ i, (long)len, (double)offset2, (double)offset,
+ updating_basis_or_equiv && offset == offset2 ? " (seek)" : "");
}
if (mapbuf) {
diff --git a/rsync.yo b/rsync.yo
index 031e982..a523f23 100644
--- a/rsync.yo
+++ b/rsync.yo
@@ -991,7 +991,10 @@ can seem to have no effect on existing files if bf(--perms) is not enabled.
In addition to the normal parsing rules specified in the bf(chmod)(1)
manpage, you can specify an item that should only apply to a directory by
prefixing it with a 'D', or specify an item that should only apply to a
-file by prefixing it with a 'F'. For example:
+file by prefixing it with a 'F'. For example, the following will ensure
+that all directories get marked set-gid, that no files are other-writable,
+that both are user-writable and group-writable, and that both have
+consistent executability across all bits:
quote(--chmod=Dg+s,ug+w,Fo-w,+X)
--
The rsync repository.
More information about the rsync-cvs
mailing list