Before I call this a bug, I figured I'd ask -- what's the "+ 3" for in 
calc_sacl_entries?  

static int calc_sacl_entries(const rsync_acl *racl)
{
        /* A System ACL always gets user/group/other permission entries. */
        return racl->names.count
#ifdef ACLS_NEED_MASK
             + 4;
#else
             + (racl->mask_obj != NO_ENTRY) + 3;  <---- What's this for?
#endif
}


On Mac OS X, a file with the system limit of 128 ACEs will consistently run 
into the error noted in the subject.  calc_sacl_entries is returning 131 for 
such a file, and acl_init() returns ENOMEM as a result.  If I remove the "+ 3", 
everything is peachy -- all the ACEs are copied and I don't see any harm.  Is 
there an unforeseen consequence to removing the +3?

This script reliably reproduces the error:

##########
#!/bin/sh

rsync="/usr/local/bin/rsync"

src=`mktemp -d /tmp/src.XXXXXX`
tgt=`mktemp -d /tmp/tgt.XXXXXX`
echo "$tgt/test"
file=$src/test
touch $file

x=0
limit=128
while [ $x -lt $limit ] ; do
         chmod +a# $x "$USER allow write,writeattr,writeextattr" $file
         x=$(($x + 1))
done

"$rsync" -vaAX $src/ $tgt/

rm -rf $src $tgt
##########


Thanks,
Mike
-- 
Please use reply-all for most replies to avoid omitting the mailing list.
To unsubscribe or change options: https://lists.samba.org/mailman/listinfo/rsync
Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html

Reply via email to