DO NOT REPLY [Bug 3527] New: rsync: tries to chdir() into a device

samba-bugs at samba.org samba-bugs at samba.org
Mon Feb 20 06:53:35 GMT 2006


https://bugzilla.samba.org/show_bug.cgi?id=3527

           Summary: rsync: tries to chdir() into a device
           Product: rsync
           Version: 2.6.6
          Platform: x86
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P3
         Component: core
        AssignedTo: wayned at samba.org
        ReportedBy: philipp.marek at bmlv.gv.at
         QAContact: rsync-qa at samba.org


With the following test-script I get an error of ENOTDIR; see
below for strace. It runs on an shmfs, and that may be some cause 
for that bug, because previously it ran on a normal ext3 partition and
I didn't see this message.


The script makes some files, devices, symlinks and directories; then changes
the type of nearly all entries and tries to combine them.

    #!/bin/bash
    mkdir typechange
    (
     cd typechange

     for i in 1 2 3 4
     do
         echo file > file-$i
         cp -a /dev/zero device-$i
         ln -s file-$i symlink-$i
         mkdir dir-$i
         echo sub > dir-$i/sub-entry
     done
    )

    mkdir target
    (
     cd target

     for i in file device symlink dir
     do
         echo file > $i-1
         cp -a /dev/zero $i-2
         ln -s $i-1 $i-3
         mkdir $i-4
         echo sub > $i-4/sub-entry
     done
    )

    rsync -a -n --stats --delete typechange target


Here's the annotated strace:

Starting ...
6517  16:17:41.965845 execve("/bin/sh", ["sh", "-c", "LANG=C rsync -n --delete
-a --st"...], [/* 34 vars */] <unfinished ...>
... finding the entry
6517  16:17:42.156937 select(6, [5], [], NULL, {60, 0}) = 1 (in [5], left {60,
0})
6517  16:17:42.157065 read(5, "typechange/device-4", 19) = 19
6517  16:17:42.157182 write(1, "deleting typechange/device-4\n", 29) = 29
6517  16:17:42.157298 select(6, [5], [], NULL, {60, 0} <unfinished ...>
6518  16:17:42.157385 time(NULL)        = 1135005462
6518  16:17:42.157496 munmap(0x401f6000, 266240) = 0
6518  16:17:42.157611 munmap(0x40237000, 135168) = 0

Here the entry is lstat()ed:
6518  16:17:42.157724 lstat64("typechange/device-4", {st_mode=S_IFCHR|0666,
st_rdev=makedev(1, 5), ...}) = 0
And directly afterwars an opendir() is called:
6518  16:17:42.157889 open("typechange/device-4",
O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = -1 ENOTDIR (Not a directory)

rsync continues nonetheless ...
6518  16:17:42.158268 select(4, [3], [1], NULL, {60, 0}) = 1 (out [1], left
{60, 0})
6518  16:17:42.158426 write(1, "O\0\0\10rsync: opendir \"/tmp/ram/wc2"..., 83
<unfinished ...>
6517  16:17:42.158532 <... select resumed> ) = 1 (in [5], left {60, 0})
6518  16:17:42.158606 <... write resumed> ) = 83
6517  16:17:42.158677 read(5, "O\0\0\10", 4) = 4
6517  16:17:42.158792 select(6, [5], [], NULL, {60, 0}) = 1 (in [5], left {60,
0})
6517  16:17:42.158918 read(5, "rsync: opendir \"/tmp/ram/wc2/typ"..., 79) = 79
6517  16:17:42.159044 write(2, "rsync: opendir \"/tmp/ram/wc2/typ"..., 79) = 79
6517  16:17:42.159553 select(6, [5], [], NULL, {60, 0} <unfinished ...>
6518  16:17:42.159647 time(NULL)        = 1135005462
6518  16:17:42.159780 select(4, [3], [1], NULL, {60, 0}) = 1 (out [1], left
{60, 0})

And gives an error:
6518  16:17:42.159913 write(1, "/\0\0\tIO error encountered -- skip"..., 51
<unfinished ...>
6517  16:17:42.160542 <... select resumed> ) = 1 (in [5], left {59, 990000})
6518  16:17:42.160669 <... write resumed> ) = 51
6517  16:17:42.160741 read(5, "/\0\0\t", 4) = 4
6517  16:17:42.160861 select(6, [5], [], NULL, {60, 0}) = 1 (in [5], left {60,
0})
6517  16:17:42.160987 read(5, "IO error encountered -- skipping"..., 47) = 47
6517  16:17:42.161113 write(1, "IO error encountered -- skipping"..., 47) = 47
6517  16:17:42.161238 select(6, [5], [], NULL, {60, 0} <unfinished ...>
... and finished with an error.
6517  16:17:42.244334 waitpid(6518, 0xbfcb8f18, WNOHANG) = -1 ECHILD (No child
processes)
6517  16:17:42.244468 getpid()          = 6517
6517  16:17:42.244570 kill(6518, SIGUSR1) = -1 ESRCH (No such process)
6517  16:17:42.244690 write(2, "rsync error: some files could no"..., 74) = 74
6517  16:17:42.245154 munmap(0x40017000, 4096) = 0
6517  16:17:42.245294 exit_group(23)    = ?


Regards,

Phil


-- 
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.


More information about the rsync mailing list