]> git.ipfire.org Git - thirdparty/rsync.git/log
thirdparty/rsync.git
5 years agoSet Copyright years and make them easier to update
Wayne Davison [Thu, 9 Apr 2020 22:11:37 +0000 (15:11 -0700)] 
Set Copyright years and make them easier to update

I replaced git-set-file-times with an improved version that I wrote
recently (in python3). A new script uses it to figure out the
last-modified year for each *.[ch] file and updates its copyright.
It also puts the latest year into the latest-year.h file for the
output of --version.

5 years agoSwitch RSYNC_PORT to -1 in check_for_hostspec().
Wayne Davison [Wed, 8 Apr 2020 02:21:37 +0000 (19:21 -0700)] 
Switch RSYNC_PORT to -1 in check_for_hostspec().

5 years agoFix the default skip-compress list.
Wayne Davison [Wed, 8 Apr 2020 01:08:05 +0000 (18:08 -0700)] 
Fix the default skip-compress list.

The default value of the skip-compress list actually comes from the
daemon's default lp_dont_compress() value, but a while back the vars
stopped getting default values in a non-daemon run. I added a call to
reset_daemon_vars() so that the "Vars" values get set from "Defaults".

5 years agoTweak the grep to look for sys/sysmacros.h.
Wayne Davison [Tue, 7 Apr 2020 22:32:06 +0000 (15:32 -0700)] 
Tweak the grep to look for sys/sysmacros.h.

5 years agoAvoid the include warnings for major().
Wayne Davison [Tue, 7 Apr 2020 22:16:19 +0000 (15:16 -0700)] 
Avoid the include warnings for major().

5 years agoMake use of the new RSYNC_PORT env var.
Wayne Davison [Tue, 7 Apr 2020 20:29:29 +0000 (13:29 -0700)] 
Make use of the new RSYNC_PORT env var.

5 years agoReplace mkproto.pl with mkproto.awk
Ethan Sommer via rsync [Tue, 7 Apr 2020 20:01:45 +0000 (13:01 -0700)] 
Replace mkproto.pl with mkproto.awk

This replaces the build dependency on perl with one on awk which is
already used throughout the build system and is much more ubiquitous
than perl.

5 years agoSet RSYNC_PORT in the env for a daemon-over-rsh connection.
Wayne Davison [Mon, 6 Apr 2020 02:32:40 +0000 (19:32 -0700)] 
Set RSYNC_PORT in the env for a daemon-over-rsh connection.
Fixes bug #14163.

5 years agoA quick fix for some perl patch-helper scripts.
Wayne Davison [Mon, 6 Apr 2020 00:18:32 +0000 (17:18 -0700)] 
A quick fix for some perl patch-helper scripts.

5 years agoAnother tweak for a change in git status.
Wayne Davison [Mon, 6 Apr 2020 00:12:29 +0000 (17:12 -0700)] 
Another tweak for a change in git status.

5 years agoTweak some indentation.
Wayne Davison [Mon, 6 Apr 2020 00:00:54 +0000 (17:00 -0700)] 
Tweak some indentation.

5 years agoDon't throw an error if a potential fuzzy dir isn't a dir
Wayne Davison [Sun, 5 Apr 2020 23:41:15 +0000 (16:41 -0700)] 
Don't throw an error if a potential fuzzy dir isn't a dir

Add a flag for calling get_dirlist() and for send_directory() that
indicates that the dirname is allowed to not be a directory.  Based
on a patch by Ben Rubson.  Fixes bug #13445.

5 years agoUse "exit 1" in atomic-rsync for error exit.
Wayne Davison [Sun, 5 Apr 2020 23:23:07 +0000 (16:23 -0700)] 
Use "exit 1" in atomic-rsync for error exit.
Fixes bug #15469.

5 years agoSome configure improvements for strict C99 compilers (based on a patch by Florian...
Wayne Davison [Sun, 5 Apr 2020 23:19:54 +0000 (16:19 -0700)] 
Some configure improvements for strict C99 compilers (based on a patch by Florian Weimer).

5 years agoAdd progress output via SIGINFO and SIGVTALRM
Wayne Davison [Sun, 5 Apr 2020 21:52:32 +0000 (14:52 -0700)] 
Add progress output via SIGINFO and SIGVTALRM

On BSD-ish systems you can type Ctrl+T to see the current file and
the progress output (in --info=progress2 format).  On hosts w/o
SIGINFO, use something like "killall -VTALRM rsync" or a more
targetted "kill -VTALRM PID ..." call (as needed).

5 years agoNo need to forward --write-devices to a remote sender.
Wayne Davison [Sun, 5 Apr 2020 19:01:32 +0000 (12:01 -0700)] 
No need to forward --write-devices to a remote sender.

5 years agoAdded the --write-devices option.
Wayne Davison [Sun, 5 Apr 2020 18:21:02 +0000 (11:21 -0700)] 
Added the --write-devices option.

This is a fleshed out version of the old one in the patches repo with
documentation & proper handling of the implied --inplace option for a
daemon's option-rufusing considerations. I ommitted the -w short option
as I would hate for someone to turn this on accidentally.

5 years agoMake exit_cleanup() use _exit() if called from a signal handler.
Wayne Davison [Sun, 5 Apr 2020 17:26:40 +0000 (10:26 -0700)] 
Make exit_cleanup() use _exit() if called from a signal handler.
Fixes bug #13982.

5 years agoEnhance the validation of --block-size for older protocols.
Wayne Davison [Sun, 5 Apr 2020 17:04:05 +0000 (10:04 -0700)] 
Enhance the validation of --block-size for older protocols.
Fixes bug #13974.

5 years agoMake the --copy-links caveat a little clearer.
Wayne Davison [Sun, 5 Apr 2020 16:43:59 +0000 (09:43 -0700)] 
Make the --copy-links caveat a little clearer.

5 years agoUse nanosleep if it is available.
Wayne Davison [Sun, 5 Apr 2020 16:22:00 +0000 (09:22 -0700)] 
Use nanosleep if it is available.
Fixes bug #14328.

5 years agoAdd a --copy-as=USER[:GROUP] option
Wayne Davison [Sun, 29 Mar 2020 20:01:13 +0000 (13:01 -0700)] 
Add a --copy-as=USER[:GROUP] option

This can be used by a root-run rsync to try to make reading or writing
files safer in a situation where you can't run the whole rsync command
as a non-root user.

6 years agoMatch the latest git "clean" text.
Wayne Davison [Tue, 19 Mar 2019 16:35:59 +0000 (09:35 -0700)] 
Match the latest git "clean" text.

6 years agoTry to fix the iconv crash in bug 11338.
Wayne Davison [Sat, 16 Mar 2019 18:49:53 +0000 (11:49 -0700)] 
Try to fix the iconv crash in bug 11338.

Applying Michal Ruprich's suggested patch for the rwrite() function that
should hopefully help with a bug that I couldn't reproduce.

6 years agoFix bug in try_dests_reg that Florian Zumbiehl pointed out.
Wayne Davison [Sat, 16 Mar 2019 18:12:53 +0000 (11:12 -0700)] 
Fix bug in try_dests_reg that Florian Zumbiehl pointed out.

If the alternate-destination code was scanning multiple alt dirs and it
found the right size/mtime/checksum info but not the right xattrs, it
would keep scanning the other dirs for a better xattr match, but it
would omit the unchanged-file check that needs to happen first.

6 years agoClarify the cut-off point for --copy-safe-links.
Wayne Davison [Sat, 16 Mar 2019 17:55:21 +0000 (10:55 -0700)] 
Clarify the cut-off point for --copy-safe-links.

6 years agoSome doc tweaks suggested by Clément Pit-Claudel.
Wayne Davison [Sat, 16 Mar 2019 17:10:14 +0000 (10:10 -0700)] 
Some doc tweaks suggested by Clément Pit-Claudel.

6 years agoFix zlib CVE-2016-9843.
Wayne Davison [Sat, 16 Mar 2019 16:52:46 +0000 (09:52 -0700)] 
Fix zlib CVE-2016-9843.

6 years agoFix zlib CVE-2016-9842.
Wayne Davison [Sat, 16 Mar 2019 16:52:30 +0000 (09:52 -0700)] 
Fix zlib CVE-2016-9842.

6 years agoFix zlib CVE-2016-9841.
Wayne Davison [Sat, 16 Mar 2019 16:48:10 +0000 (09:48 -0700)] 
Fix zlib CVE-2016-9841.

6 years agoFix zlib CVE-2016-9840.
Wayne Davison [Sat, 16 Mar 2019 16:47:55 +0000 (09:47 -0700)] 
Fix zlib CVE-2016-9840.

6 years agoTweak the copyright year.
Wayne Davison [Sat, 16 Mar 2019 16:15:49 +0000 (09:15 -0700)] 
Tweak the copyright year.

6 years agoFix --remove-source-files sanity check w/--copy-links the right way.
Wayne Davison [Sat, 16 Mar 2019 16:09:09 +0000 (09:09 -0700)] 
Fix --remove-source-files sanity check w/--copy-links the right way.
Fixes bug #10494.

6 years agoHandle a run from down inside the checkout tree.
Wayne Davison [Fri, 15 Mar 2019 19:20:55 +0000 (12:20 -0700)] 
Handle a run from down inside the checkout tree.

6 years agoImprove write-only --sender check & handle 2 new options.
Wayne Davison [Tue, 15 Jan 2019 19:18:36 +0000 (11:18 -0800)] 
Improve write-only --sender check & handle 2 new options.

6 years agoUpdate option culling to handle latest changes.
Wayne Davison [Tue, 15 Jan 2019 19:16:50 +0000 (11:16 -0800)] 
Update option culling to handle latest changes.

6 years agoUse a separate pass-by-value pointer for clarity.
Wayne Davison [Tue, 15 Jan 2019 18:41:42 +0000 (10:41 -0800)] 
Use a separate pass-by-value pointer for clarity.

6 years agoAvoid warning about leaked mem (didn't affect rsync's pool use).
Wayne Davison [Tue, 15 Jan 2019 18:40:18 +0000 (10:40 -0800)] 
Avoid warning about leaked mem (didn't affect rsync's pool use).

6 years agoAvoid leaving a file open on error return.
Wayne Davison [Tue, 15 Jan 2019 18:38:00 +0000 (10:38 -0800)] 
Avoid leaving a file open on error return.

6 years agoFix --prealloc to keep file-size 0 when possible.
Wayne Davison [Tue, 15 Jan 2019 16:51:08 +0000 (08:51 -0800)] 
Fix --prealloc to keep file-size 0 when possible.

6 years agoReject --log-file when read-only.
Wayne Davison [Wed, 9 Jan 2019 20:15:31 +0000 (12:15 -0800)] 
Reject --log-file when read-only.

6 years agoImprove check for ".." and guard against dash args.
Wayne Davison [Wed, 9 Jan 2019 19:54:34 +0000 (11:54 -0800)] 
Improve check for ".." and guard against dash args.

6 years agoSave each expanded daemon-config string on first use to
Wayne Davison [Wed, 9 Jan 2019 04:33:58 +0000 (20:33 -0800)] 
Save each expanded daemon-config string on first use to
avoid a new alloc on every use (one that was not freed).

6 years agoNo need to strdup each new section since we stopped using free().
Wayne Davison [Wed, 9 Jan 2019 04:30:58 +0000 (20:30 -0800)] 
No need to strdup each new section since we stopped using free().

6 years agoAvoid a yodl macro warning.
Wayne Davison [Wed, 9 Jan 2019 00:39:48 +0000 (16:39 -0800)] 
Avoid a yodl macro warning.

6 years agoMake sure that some memory zeroing always happens.
Wayne Davison [Tue, 8 Jan 2019 22:46:41 +0000 (14:46 -0800)] 
Make sure that some memory zeroing always happens.

6 years agoAvoid a yodl macro warning.
Wayne Davison [Tue, 8 Jan 2019 21:38:19 +0000 (13:38 -0800)] 
Avoid a yodl macro warning.

6 years agoFix 2 spelling errors pointed out by bug 13734.
Wayne Davison [Tue, 8 Jan 2019 21:29:18 +0000 (13:29 -0800)] 
Fix 2 spelling errors pointed out by bug 13734.

6 years agoAvoid a failed test if dirs report 1 hlink (e.g. WSL weirdness).
Wayne Davison [Sat, 5 Jan 2019 05:43:50 +0000 (21:43 -0800)] 
Avoid a failed test if dirs report 1 hlink (e.g. WSL weirdness).

6 years agoSilence fall-through warnings.
Wayne Davison [Fri, 4 Jan 2019 23:06:30 +0000 (15:06 -0800)] 
Silence fall-through warnings.

6 years agoAvoid a potential out-of-bounds read in daemon mode if argc is 0.
Wayne Davison [Sun, 16 Dec 2018 00:52:53 +0000 (16:52 -0800)] 
Avoid a potential out-of-bounds read in daemon mode if argc is 0.

6 years agoTry to be clearer that --append-verify isn't a general-purpose-copy option.
Wayne Davison [Tue, 20 Nov 2018 22:17:32 +0000 (14:17 -0800)] 
Try to be clearer that --append-verify isn't a general-purpose-copy option.

6 years agoDon't force cygwin to solaris ACLs anymore.
Wayne Davison [Tue, 20 Nov 2018 22:11:42 +0000 (14:11 -0800)] 
Don't force cygwin to solaris ACLs anymore.

6 years agoDocument how a leading comma changes the gid parsing.
Wayne Davison [Tue, 20 Nov 2018 21:44:09 +0000 (13:44 -0800)] 
Document how a leading comma changes the gid parsing.

6 years agoFix itemizing of wrong dir name on some --iconv transfers.
Wayne Davison [Tue, 20 Nov 2018 20:45:36 +0000 (12:45 -0800)] 
Fix itemizing of wrong dir name on some --iconv transfers.

Fixes bug #13492.

7 years agoNeed to mark xattr rules in get_rule_prefix().
Wayne Davison [Thu, 14 Jun 2018 22:19:34 +0000 (15:19 -0700)] 
Need to mark xattr rules in get_rule_prefix().

This fixes the bug of xattr filters getting sent as a normal filter rule
(since the 'x' was dropped in the prefix).

7 years agoAvoid a compiler error/warning about shifting a negative value.
Wayne Davison [Mon, 26 Mar 2018 02:07:22 +0000 (19:07 -0700)] 
Avoid a compiler error/warning about shifting a negative value.
Fixes bug #13268.

7 years agoAllow some pre-/post-xfer exec shell restrictions.
Wayne Davison [Sun, 25 Mar 2018 18:02:50 +0000 (11:02 -0700)] 
Allow some pre-/post-xfer exec shell restrictions.

Support both RSYNC_SHELL & RSYNC_NO_XFER_EXEC environment variables.

7 years agoPrepare the repository for more development.
Wayne Davison [Sun, 25 Mar 2018 17:04:14 +0000 (10:04 -0700)] 
Prepare the repository for more development.

7 years agoPreparing for release of 3.1.3 v3.1.3
Wayne Davison [Sun, 28 Jan 2018 23:24:27 +0000 (15:24 -0800)] 
Preparing for release of 3.1.3

7 years agoMention nanoseconds change.
Wayne Davison [Mon, 15 Jan 2018 19:25:04 +0000 (11:25 -0800)] 
Mention nanoseconds change.

7 years agoDon't force nanoseconds if a file wasn't transferred or checksummed.
Wayne Davison [Mon, 15 Jan 2018 18:52:15 +0000 (10:52 -0800)] 
Don't force nanoseconds if a file wasn't transferred or checksummed.

7 years agoPreparing for release of 3.1.3pre1 v3.1.3pre1
Wayne Davison [Mon, 15 Jan 2018 03:58:02 +0000 (19:58 -0800)] 
Preparing for release of 3.1.3pre1

7 years agoTweak copyright date.
Wayne Davison [Mon, 15 Jan 2018 03:55:07 +0000 (19:55 -0800)] 
Tweak copyright date.

7 years agoMention more changes.
Wayne Davison [Mon, 15 Jan 2018 03:51:25 +0000 (19:51 -0800)] 
Mention more changes.

7 years agoIgnore --protect-args when already sent by client
Jeriko One [Mon, 20 Nov 2017 22:42:30 +0000 (14:42 -0800)] 
Ignore --protect-args when already sent by client

In parse_arguments when --protect-args is encountered the function exits
early. The caller is expected to check protect_args, and recall
parse_arguments setting protect_args to 2. This patch prevents the
client from resetting protect_args during the second pass of
parse_arguments. This prevents parse_arguments returning early the
second time before it's able to sanitize the arguments it received.

7 years agoFix issue with earlier path-check (fixes "make check")
Wayne Davison [Sun, 3 Dec 2017 23:49:56 +0000 (15:49 -0800)] 
Fix issue with earlier path-check (fixes "make check")
and make a BOOL more explicit.

7 years agoCheck daemon filter against fnamecmp in recv_files().
Jeriko One [Fri, 17 Nov 2017 01:26:03 +0000 (17:26 -0800)] 
Check daemon filter against fnamecmp in recv_files().

7 years agoSanitize xname in read_ndx_and_attrs.
Jeriko One [Fri, 17 Nov 2017 01:05:42 +0000 (17:05 -0800)] 
Sanitize xname in read_ndx_and_attrs.

7 years agoCheck fname in recv_files sooner.
Jeriko One [Fri, 3 Nov 2017 06:44:19 +0000 (23:44 -0700)] 
Check fname in recv_files sooner.

7 years agoMore archaic-checksum improvements. This makes the len vars clearer
Wayne Davison [Tue, 7 Nov 2017 22:01:13 +0000 (14:01 -0800)] 
More archaic-checksum improvements. This makes the len vars clearer
and ensures that only the flist code gets the 2-byte digest len.

7 years agoUse the right sum len.
Wayne Davison [Tue, 7 Nov 2017 21:32:10 +0000 (13:32 -0800)] 
Use the right sum len.

7 years agoReplace startdit|enddit with description for newer yodl.
Wayne Davison [Sun, 5 Nov 2017 19:55:12 +0000 (11:55 -0800)] 
Replace startdit|enddit with description for newer yodl.
Fixes bug 13115.

7 years agoAdd missing closing paren that Paul Slootman pointed out.
Wayne Davison [Sun, 5 Nov 2017 19:50:52 +0000 (11:50 -0800)] 
Add missing closing paren that Paul Slootman pointed out.

7 years agoEnforce trailing \0 when receiving xattr name values.
Wayne Davison [Sun, 5 Nov 2017 19:33:15 +0000 (11:33 -0800)] 
Enforce trailing \0 when receiving xattr name values.
Fixes bug 13112.

7 years agoUse full MD4 len for archaic protocol auth.
Wayne Davison [Mon, 30 Oct 2017 16:11:16 +0000 (09:11 -0700)] 
Use full MD4 len for archaic protocol auth.

7 years agoDon't overflow an allocated dest buf when input path is empty.
Wayne Davison [Sun, 29 Oct 2017 22:52:46 +0000 (15:52 -0700)] 
Don't overflow an allocated dest buf when input path is empty.
Fixes bug 13105.

7 years agoAdd an extra argc validation in do_server_sender().
Wayne Davison [Sun, 29 Oct 2017 22:22:22 +0000 (15:22 -0700)] 
Add an extra argc validation in do_server_sender().
Fixes bug 13104.

7 years agoOnly allow a modern checksum method for passwords.
Wayne Davison [Wed, 25 Oct 2017 03:44:37 +0000 (20:44 -0700)] 
Only allow a modern checksum method for passwords.

7 years agoDon't forget to tweak sum_update().
Wayne Davison [Wed, 25 Oct 2017 03:42:41 +0000 (20:42 -0700)] 
Don't forget to tweak sum_update().

7 years agoHandle archaic checksums properly.
Wayne Davison [Tue, 24 Oct 2017 22:40:37 +0000 (15:40 -0700)] 
Handle archaic checksums properly.

7 years agoSet our_uid & our_gid values when changed by the daemon.
Wayne Davison [Tue, 10 Oct 2017 00:13:00 +0000 (17:13 -0700)] 
Set our_uid & our_gid values when changed by the daemon.
Fixes bug 10719.

7 years agoMention --link-dest limit.
Wayne Davison [Sun, 8 Oct 2017 16:30:18 +0000 (09:30 -0700)] 
Mention --link-dest limit.

7 years agoMention refusing delete for write-only.
Wayne Davison [Sun, 8 Oct 2017 16:18:10 +0000 (09:18 -0700)] 
Mention refusing delete for write-only.

7 years agoMention -O is forced, not just implied.
Wayne Davison [Sun, 8 Oct 2017 15:52:33 +0000 (08:52 -0700)] 
Mention -O is forced, not just implied.

7 years agoFix double-fuzzy + link-dest issue.
Wayne Davison [Sun, 8 Oct 2017 15:39:35 +0000 (08:39 -0700)] 
Fix double-fuzzy + link-dest issue.
Fixes bug 11866.

7 years agoFix possible buffer overrun for some large name_len values.
Wayne Davison [Sun, 8 Oct 2017 00:54:03 +0000 (17:54 -0700)] 
Fix possible buffer overrun for some large name_len values.
Fixes bug 12568.

7 years agoAdd "daemon chroot|uid|gid" parameters.
Wayne Davison [Mon, 4 Sep 2017 21:20:16 +0000 (14:20 -0700)] 
Add "daemon chroot|uid|gid" parameters.

This allows the daemon to run chrooted as any uid+gid you like
(prior to the transfer possibly changing the chroot and/or the
uid+gid further). Based on the patch in #12817.

7 years agoAdd nanosecond mtime support for Mac OS X.
Wayne Davison [Thu, 31 Aug 2017 15:22:14 +0000 (08:22 -0700)] 
Add nanosecond mtime support for Mac OS X.

Slightly tweaked the patch contributed by Heikki Lindholm.

8 years agoAdd "syslog tag" to rsync daemon config.
Wayne Davison [Sat, 29 Apr 2017 18:07:39 +0000 (11:07 -0700)] 
Add "syslog tag" to rsync daemon config.

8 years agoDon't allow --daemon or --server alias via popt.
Wayne Davison [Mon, 20 Feb 2017 19:04:06 +0000 (11:04 -0800)] 
Don't allow --daemon or --server alias via popt.
Fixes bug 12576.

8 years agoAdd a way to specify xattr name filtering.
Wayne Davison [Mon, 23 Jan 2017 00:01:45 +0000 (16:01 -0800)] 
Add a way to specify xattr name filtering.

8 years agoJoin some lines.
Wayne Davison [Sun, 22 Jan 2017 23:44:18 +0000 (15:44 -0800)] 
Join some lines.

8 years agoGet rid of some superfluous double-quotes in error messages.
Wayne Davison [Sun, 22 Jan 2017 23:42:36 +0000 (15:42 -0800)] 
Get rid of some superfluous double-quotes in error messages.

8 years agoFix extern of preallocated_len w/o SUPPORT_PREALLOCATION.
Wayne Davison [Mon, 31 Oct 2016 16:06:50 +0000 (09:06 -0700)] 
Fix extern of preallocated_len w/o SUPPORT_PREALLOCATION.

8 years agoMore fixes for --progress quirks.
Wayne Davison [Sat, 29 Oct 2016 21:47:58 +0000 (14:47 -0700)] 
More fixes for --progress quirks.

This patch avoids inconsistent evaluation of options in the
show_filelist_p() function by turning it into a var.  We
also avoid setting "output_needs_newline" if --quiet was
specified.

8 years agoWe need a LF after filelist-progress with a CR.
Wayne Davison [Sat, 29 Oct 2016 21:33:44 +0000 (14:33 -0700)] 
We need a LF after filelist-progress with a CR.
Fixes bug 12367.

8 years agoUse S_BLKSIZE when multiplying st_blocks.
Wayne Davison [Sat, 15 Oct 2016 18:13:28 +0000 (11:13 -0700)] 
Use S_BLKSIZE when multiplying st_blocks.

8 years agoSupport --sparse combined with --preallocate or --inplace.
Wayne Davison [Mon, 10 Oct 2016 18:49:50 +0000 (11:49 -0700)] 
Support --sparse combined with --preallocate or --inplace.

The new code tries to punch holes in the destination file using newer
Linux fallocate features. It also supports a --whole-file + --sparse +
--inplace copy on any filesystem by truncating the destination file.

8 years agoxattrs: maintain a hashtable in order to speed up find_matching_xattr()
Stefan Metzmacher [Fri, 22 Jul 2016 17:46:46 +0000 (19:46 +0200)] 
xattrs: maintain a hashtable in order to speed up find_matching_xattr()

As a testcase I've used one directory on gpfs with 1000000 files,
each with an xattr called 'name$i' having a value of 'value$i'.
So we also have 1000000 unique xattrs. The source and dest directories
are already in sync before. So the rsync command is basically a noop,
just verifying that everything is already in sync.

The results before this patchset are:

  [gpfs]# time rsync -a -P -X -q source-xattr/ dest-with-xattr/

  real    8m46.191s
  user    6m29.016s
  sys     0m24.883s

  [gpfs]# time rsync -a -P -q source-xattr/ dest-without-xattr/

  real    1m58.462s
  user    0m0.957s
  sys     0m11.801s

With the patchset I got:

  [gpfs]# time /gpfs/rsync.install/bin/rsync -a -P -X -q source-xattr/ dest-with-xattr/

  real    2m4.150s
  user    0m1.917s
  sys     0m17.077s

  [gpfs]# time /gpfs/rsync.install/bin/rsync -a -P -q source-xattr/ dest-without-xattr/
  real    1m59.534s
  user    0m0.924s
  sys     0m11.599s

It means the time in userspace dropped from 6m29.016s down to 0m1.917s!
Without -X we get ~ 0m0.9s with or without the patch.

Part of a patchset for bug 5324.