This is a PoC patch for NFSv4/ZFS ACLs.<br><br>The objective of the patch is that rsync --acls support NFSv4/ZFS ACLs without requiring a new command line option<br><br>NFSv4 ACLs can't be represented using POSIX draft ACLs, if an NFSv4 ACL is<br>
present a separate POSIX draft ACL will not be present and there are new APIs<br>to access NFSv4 ACLs.  So we need to distinguish between NFSv4 ACLs and POSIX<br>ACLs in rsync.  I've done this by introducing an "ACL type" on the wire, and<br>
revving the protocol version.  If rsync encounters a NFSv4 ACL and the peer<br>doesn't support the higher protocol version the process is terminated.<br><br>Linux and Solaris represent NFSv4 ACLs differently and provide no API to<br>
serialize them in a platform-independent format so this patch treats the ACLs as<br>platform-dependent opaque data.<br><br>On Linux NFSv4 ACLs are implemented using xattrs so xattr support must be<br>compiled in.  The implementation re-uses xattrs.c:get_xattr_data so the static<br>
directive is removed from this function.<br><br>All the NFSv4 ACL handling code is surrounded by<br>#ifdef SUPPORT_NFS4_ACLS<br>- the parts that handle sending and receiving the ACL type used in the higher protocol version are<br>
compiled in unconditionally<br><br>The remaining to-dos are:<br><br> * autoconf integration<br> * move platform-specific code from acl.c to lib/sysacls.c or a new file lib/sysnfs4acls.c ?<br> * wasn't sure how to SUBPROTOCOL_VERSION worked so I've revved PROTOCOL_VERSION to 31<br>
 - if this is agreed we need to set all the code that references the higher protocol version to use the right number<br> * rebase off HEAD<br><br>fake-super support is done.<br><br>I can work on the remaining to-dos but before proceeding further I wanted to know if the basis of this patch would be accepted.<br>
<br>