"Invalid argument" error when moving sockets to backup dir

Jordan Russell jr-list-2008 at quo.to
Thu May 22 19:57:56 GMT 2008


Local end (receiving): 3.0.2, 3.0.3pre2
Remote end (sending): 2.6.9

Under 3.0.x, rsync sometimes prints an "Invalid argument" error when
moving sockets to the backup directory (--backup-dir):

rsync: mknod "/backup/machine/../machine-before-4/var/run/audit_events"
failed: Invalid argument (22)

The problem appears to be that, at least with sockets, keep_backup() is
calling do_mknod() with garbage in the third parameter (dev).

When I add some debug output to do_mknod():

  printf("mknod pathname=%s, mode=%d, dev=%llu\n", pathname, mode, dev);
  int mknodres = mknod(pathname, mode, dev);
  printf("mknod result: %d, errno=%d\n", mknodres, errno);
  return mknodres;

3.0.2 and 3.0.3pre2 show:

mknod pathname=../machine-before-4/var/run/audit_events, mode=49645,
dev=89016461384865329
mknod result: -1, errno=22
rsync: mknod "/backup/machine/../machine-before-4/var/run/audit_events"
failed: Invalid argument (22)

while 2.6.9 shows:

mknod pathname=../machine-before-4/var/run/audit_events, mode=49645, dev=0
mknod result: -1, errno=2
mknod pathname=../machine-before-4/var/run/audit_events, mode=49645, dev=0
mknod result: 0, errno=2

and no error messages.

-- 
Jordan Russell


More information about the rsync mailing list