[Bug 2116] New: rsync ignores write error

samba-bugs at samba.org samba-bugs at samba.org
Thu Dec 2 16:49:27 GMT 2004


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

           Summary: rsync ignores write error
           Product: rsync
           Version: 2.6.3
          Platform: All
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P3
         Component: core
        AssignedTo: wayned at samba.org
        ReportedBy: jim at meyering.net
         QAContact: rsync-qa at samba.org


rsync-2.6.3 can fail to report a write error.
Here's a demonstration, writing to a full partition:

You can reproduce it like this:

  $ echo foo > in
  $ strace -f -o log rsync in /full/tmp
  $ grep 'write.*ENOSP' log
  4787  write(1, "foo\n", 4)              = -1 ENOSPC (No space left on device)
  $ rsync --version|head -n1
  rsync  version 2.6.3  protocol version 28

The cause seems to be this unchecked flush_write_file call:

Index: receiver.c
===================================================================
RCS file: /cvsroot/rsync/receiver.c,v
retrieving revision 1.110
diff -u -p -r1.110 receiver.c
--- receiver.c	27 Nov 2004 17:56:58 -0000	1.110
+++ receiver.c	2 Dec 2004 16:40:23 -0000
@@ -289,7 +289,8 @@ static int receive_data(int f_in, char *
 		offset += len;
 	}

-	flush_write_file(fd);
+	if (flush_write_file(fd) < 0)
+		goto report_write_error;

 #ifdef HAVE_FTRUNCATE
 	if (inplace && fd != -1)

The above patch is relative to the latest CVS sources on the trunk.
With the above knee-jerk patch, I do get the write error I want,
but also some other probably undesirable diagnostics:

  $ ./rsync in /full/tmp
  rsync: write failed on "/full/tmp/in": No space left on device (28)
  rsync error: error in file IO (code 11) at receiver.c(307)
  rsync: connection unexpectedly closed (25 bytes received so far) [generator]
  rsync error: error in rsync protocol data stream (code 12) at io.c(362)
  rsync: connection unexpectedly closed (32 bytes received so far) [sender]
  rsync error: error in rsync protocol data stream (code 12) at io.c(362)
  [Exit 12]

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