samba-bugs@samba.org
2006-Feb-23  00:37 UTC
DO NOT REPLY [Bug 3543] New: [ACL] rsync calls default_perms_for_dir on omitted implied dirs before ensuring they exist
https://bugzilla.samba.org/show_bug.cgi?id=3543
           Summary: [ACL] rsync calls default_perms_for_dir on omitted
                    implied dirs before ensuring they exist
           Product: rsync
           Version: 2.6.7
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P3
         Component: core
        AssignedTo: wayned@samba.org
        ReportedBy: hashproduct@verizon.net
         QAContact: rsync-qa@samba.org
Run the following in an empty directory:
    mkdir a
    touch a/b
    rsync --relative --no-implied-dirs a/b dest/
The following error messages result (my indentation):
    default_perms_for_dir: sys_acl_get_file(a, SMB_ACL_TYPE_DEFAULT):
        No such file or directory, falling back on umask
    default_perms_for_dir: sys_acl_get_file(a, SMB_ACL_TYPE_DEFAULT):
        No such file or directory, falling back on umask
    rsync error: some files could not be transferred (code 23) at main.c(882)
        [sender]
The trouble is that rsync is asking for the default permissions of dest/a
before dest/a has been created.  Moving the calculation of destination default
permissions later in recv_generator, after the creation of implied directories,
would probably fix the problem, but I'm not familiar enough with the logic
of
that 520-line function to know where to put it.
Separating this calculation from the fuzzy list calculation would also fix what
appears to be a logic error.  If --fuzzy is given and --perms is not given and
the first file to be received into a directory is not a regular file,
parent_dirname will be set to the directory but the fuzzy list will not be
updated.  When rsync does receive a regular file into the directory, it will
assume the fuzzy list does not need to be updated and use the wrong list.
-- 
Configure bugmail: https://bugzilla.samba.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug, or are watching the QA contact.
samba-bugs@samba.org
2006-Feb-23  20:19 UTC
DO NOT REPLY [Bug 3543] [ACL] rsync calls default_perms_for_dir on omitted implied dirs before ensuring they exist
https://bugzilla.samba.org/show_bug.cgi?id=3543
wayned@samba.org changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED
------- Comment #1 from wayned@samba.org  2006-02-23 14:19 MST -------
This report revealed several problems with -R --no-implied-dirs:
- The --fuzzy option could generate an I/O error if the destination
  dir didn't exist yet.
- Symlinks and devices could fail to be created if they were the
  first item in an implied dir that didn't exist yet.
These bugs have been fixed on the trunk by having the generator create the
implied directory path (if it is missing) near the top of recv_generator().
The other two bugs mentioned with an rsync patched with acls.diff have also
been fixed:
- Now that the missing dirs have been created, default_perms_for_dir() has
nothing to complain about.
- The logic error in the --fuzzy code that could leave fuzzy_dirlist unset has
also been fixed (and indeed, had to be fixed on the trunk due to the new
find-missing-implied-dir logic).
The acls.diff has been updated in CVS and in the latest "nightly" tar
file.
Thanks for the report!
-- 
Configure bugmail: https://bugzilla.samba.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug, or are watching the QA contact.
Seemingly Similar Threads
- DO NOT REPLY [Bug 5426] New: --existing and default_perms_for_dir for non-existing directory
- --existing and default_perms_for_dir for non-existing directory
- incoming chmod on daemon fails on subdirectories
- Bug#401189: rsync: using rltvz options spews sys_acl_get_file messages
- Rsync stops in the middle of a large transfer