From: Michael W. <mw...@un...> - 2004-06-15 16:45:06
|
Philip and other IBM folks, Following up the rsync issue, I have found more useful information. Problem: rsync as packaged by IBM can not write beyond 2,147,483,647 bytes. Proof: (1) while rsync from a remote box (Solaris 8) to IBM AIX 5.2: $ /opt/csw/bin/rsync -av --rsh=ssh users01.dbf oracle@zimu:/max-ds1/ora... ... rsync: writefd_unbuffered failed to write 4 bytes: phase "unknown": Broken pipe rsync error: error in rsync protocol data stream (code 12) at io.c(515) I monitor the temp file: $ while true; do ls -ls .u*; df -k .; done Filesystem 1024-blocks Free %Used Iused %Iused Mounted on /dev/lv01 7503872 292200 97% 23225 2% /max-ds1 2097152 -rw------- 1 oracle dba 2147483647 Jun 15 09:06 .users01.dbf.OS2Oaa Filesystem 1024-blocks Free %Used Iused %Iused Mounted on /dev/lv01 7503872 292200 97% 23225 2% /max-ds1 ls: 0653-341 The file .u* does not exist. The write failed exactly at 2,147,483,647 which is 2*1024*1024*1024 - 1. And the truss -f -p <rsync_pid> shows: 28448: kread(0, "\0\0\0\0\0\0\0\0\0\0\0\0".., 19688) = 16384 28448: _select(1, 0x2FF205D8, 0x00000000, 0x00000000, 0x2FF205D0) = 1 28448: kread(0, "\0\0\0\0\0\0\0\0\0\0\0\0".., 3304) = 3304 28448: kwrite(1, "\002\0\00203 ÿ ü\0\0\0\0".., 32768) = 32767 28448: kwrite(6, " &\0\0\b w r i t e f a".., 42) = 42 28448: _sigaction(30, 0x2FF21AC0, 0x2FF21AD0) = 0 28448: _sigaction(31, 0x2FF21AC0, 0x2FF21AD0) = 0 28448: unlink(".users01.dbf.OS2Oaa") = 0 28448: kwrite(6, " ;\0\0\b r s y n c e r".., 63) = 63 28448: kfcntl(1, F_GETFL, 0x00000000) = 2 28448: kfcntl(2, F_GETFL, 0x00000000) = 2 28448: _exit(11) I would think it should use *write64(). Is kwrite() capable handling 2+GB file? (2) Could this be the remote rsync problem? No. Because: (2.1) rsync 6+GB file to the remote box succeeded as I reported earlier, which means the remote rsync is capable write 6+GB file. And this appears that rsync on IBM AIX 5.2 is capable reading 6+GB file. (2.2) rsync on IBM AIX 5.2 locally also fails. (2.3) rsync on remote box to itself succeeded for the same 2+GB file. Environment: # oslevel -r 5200-02 # rpm -ql rsync-2.5.4-1 /opt/freeware/bin/rsync /opt/freeware/doc/rsync-2.5.4 /opt/freeware/doc/rsync-2.5.4/COPYING /opt/freeware/doc/rsync-2.5.4/README /opt/freeware/doc/rsync-2.5.4/tech_report.tex /opt/freeware/man/man1/rsync.1 /opt/freeware/man/man5/rsyncd.conf.5 /usr/bin/rsync Other info: - Straightforward compilation for the latest version of rsync 2.6.2 have the same problem. Modify config.h not to mkstemp() may fix it. - This problem should be very easy to reproduce. -- Michael Wang * http://www.unixlabplus.com/ * mw...@un... |