Getting EEXIST out of make_bak_dir()
Jordan Russell
jr-list-2010 at quo.to
Sun Apr 18 15:46:47 MDT 2010
(followup to thread from last month)
On 3/9/2010 10:09 AM, Wayne Davison wrote:
> On Mon, Mar 08, 2010 at 10:02:26AM -0600, Mike Bombich wrote:
>> rsync: make_bak_dir mkdir "/Volumes/Backup/_Archive_2010_March_07_22-27-43/Users/jsmith/Library/Mail/Mailboxes/ Orchestra" failed: File exists
>
> Is something else creating that directory at the same time? A race
> where 2 processes are creating the same directory would be pretty rare,
> though, so it makes me think that OS X is really failing with the wrong
> error for a filename it doesn't like. I note that the next element has
> an asterisk in it -- should that work OK on that filesystem?
I reported what appears to be the same issue in 2008:
http://lists.samba.org/archive/rsync/2008-May/020892.html
and I'm still seeing it today on 3.0.7.
In my case, nothing else ever accesses the backup directory while rsync
is running.
I looked through the sources a while back and noticed that both
receiver.c and generator.c can invoke make_backup(), either directly or
via finish_transfer().
Could it be, then, that this error is caused by rsync's receiver and
generator processes trying to initially create the backup directory at
the same time?
- receiver enters make_backup()
- generator enters make_backup()
- receiver checks if dir exists: No
- generator checks if dir exists: No
- receiver tries to create dir: Success
- generator tries to create dir: EEXIST
I don't remember seeing anything in the code that would prevent the
generator from deleting a file while the receiver is updating a file.
Both of those operations, of course, involve moving files into the
backup directory.
--
Jordan Russell
More information about the rsync
mailing list