2.6.9 w/ acl, xattr, and fake-super support?

Wesley W. Terpstra wesley at terpstra.ca
Fri Nov 16 10:45:07 GMT 2007

On Nov 16, 2007, at 10:08 AM, Daniel Maher wrote:
> Thank you for your reply.  My exact sequence is as follows:
> $ tar -xzf rsync-2.6.9.tar.gz
> $ cd rsync-2.6.9
> $ patch -p1 < patches/acls.diff
> $ patch -p1 < patches/xattrs.diff
> $ patch -p1 < patches/fake-super.diff

Ok. I see now what's wrong. Somehow parts of the xattr patch are also  
in the fake-super patch. At any rate, the config.h.in and configure  
are both auto generated. Just run:
to create clean versions of them. The rsync.1 is just the manpage.  
You can probably live without it.

The only "problem file" is then the proto.h. However, a quick  
inspection shows that you just need to add the lines:
+ int get_stat_xattr(const char *fname, int fd, STRUCT_STAT *fst,  
+ int set_stat_xattr(const char *fname, struct file_struct *file);
+ int x_stat(const char *fname, STRUCT_STAT *fst, STRUCT_STAT *xst);
+ int x_lstat(const char *fname, STRUCT_STAT *fst, STRUCT_STAT *xst);
+ int x_fstat(int fd, STRUCT_STAT *fst, STRUCT_STAT *xst);

I suspect the problem is that proto.h and rsync.1 are also both auto- 
generated. Whoever prepared the patch probably just forgot to  
recreate these files between patches when creating the fake-super.patch.

When I compile after adding these lines,
	./configure --enable-xattr-support --enable-acl-support
I get (on osx) a few unused variable warnings (which I confirmed are  
harmless), some minor signedness warnings (again harmless), and an  
uninitialized variable (which only occurs in an error case where the  
program quits).

I worry, though, that this won't solve your problem:
> Internal error: wrong write used in receiver.
> rsync error: protocol incompatibility (code 2) at io.c(1204)
> [generator=2.6.9]

The missing prototypes should only matter on non-intel machines. I'd  
give you the copy of 2.6.9 which I was using, but I deleted it when  
3.0.0pre1 came out. :-( Just to make sure: you have the same patched  
rsync on both sender and receiver, right? If you use -X or -A they  
must match.

Also, if you are using osx (not linux), you must NOT enable acl  
support. eg:
	./configure --enable-xattr-support
Prior to v3, ACL support did not exist on osx. Even though the patch  
is applied, you still don't enable it.

Hope this helps!

More information about the rsync mailing list