Nulls instead of data

Wojtek.Pilorz wpilorz at bdk.pl
Thu Sep 22 07:35:52 GMT 2005


On Wed, 21 Sep 2005, Wayne Davison wrote:

> Date: Wed, 21 Sep 2005 10:06:07 -0700
> From: Wayne Davison <wayned at samba.org>
> To: Wojtek.Pilorz <wpilorz at bdk.pl>
> Cc: rsync at lists.samba.org
> Subject: Re: Nulls instead of data
> 
> On Wed, Sep 21, 2005 at 11:55:43AM +0200, Wojtek.Pilorz wrote:
> > After patching rsync with the patch provided, rsync did not quietly 
> > produced bad file, which is good, and, unfortunately, it did not produce 
> > any data, so there is still some room for improvement;
> 
> If you want the partial data saved (instead of discarded), specify
> --partial.  Otherwise, I don't see what else you expect rsync to do
> after getting an I/O read error on the source file.  
> 
> ..wayne..
> 
Oh, I understand.

Unfortunately, I could not make more tests during my normal working 
hours unless I modify rsync to use smaller read size - reading 256KB over 
that slow and unstable link would make other users of that link very 
unhappy.
So my question goes:
I would like to recompile rsync with smaller buffers;
in rsync.h I can see

#define SPARSE_WRITE_SIZE (1024)
#define WRITE_SIZE (32*1024)
#define CHUNK_SIZE (32*1024)
#define MAX_MAP_SIZE (256*1024)

#define FILE_EXTENT     (256 * 1024)
#define HLINK_EXTENT    (128 * 1024)

which values should I change to have e.g. 24KBytes in one read, if that is possible?

BTW.
Was that expected that after unsuccessful read (that one with EIO) data was still
written by the process, with nulls from some point?

It is interesing to compare trace with system log, which says

Sep 21 08:54:36 pc2 kernel: SMB server not responding
Sep 21 08:54:36 pc2 kernel: smb_request: result -5, setting invalid
Sep 21 08:54:36 pc2 kernel: smb_file_read: transftest/rsync-2.6.6.tar.gz validation failed, error=4294967291
Sep 21 08:54:41 pc2 kernel: smb_retry: successful, new pid=2762, generation=40
Sep 21 08:58:32 pc2 kernel: SMB server not responding
Sep 21 08:58:32 pc2 kernel: smb_get_length: recv error = 5
Sep 21 08:58:32 pc2 kernel: smb_request: result -5, setting invalid
Sep 21 08:58:32 pc2 kernel: smb_file_read: transftest/rsync-2.6.6.tar.gz validation failed, error=4294967291
Sep 21 08:58:34 pc2 kernel: smb_retry: successful, new pid=2762, generation=41

I would understand that second read was attempted while SMB process was about
retrying, and that failed.
Perhaps if read had been retried after a few seconds of sleeping it would 
succeed. 
But I am not suggesting that rsync would be an appropriate place for such 
hacks.

Best regards,

Wojtek




More information about the rsync mailing list