Bug 2670 - rsync does not support Solaris' doorfs
Summary: rsync does not support Solaris' doorfs
Status: ASSIGNED
Alias: None
Product: rsync
Classification: Unclassified
Component: core (show other bugs)
Version: 2.6.4
Hardware: Sparc Solaris
: P3 enhancement (vote)
Target Milestone: ---
Assignee: Wayne Davison
QA Contact: Rsync QA Contact
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-04-29 01:25 UTC by Beat Müller
Modified: 2005-05-03 03:16 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Beat Müller 2005-04-29 01:25:30 UTC
rsync does not recognize the Solaris doorfs:
Copy c2t1d0s0 (mounted on /) using rsync -aHx --delete
skipping non-regular file "dev/.devfsadm_synch_door"
skipping non-regular file "etc/sysevent/devfsadm_event_channel/1"
...

ls -l /dev/.devfsadm_synch_door:
Drw-------    1 root     root            0 Apr 22 20:29 /dev/.
devfsadm_synch_door>

This applied to all rsync versions I think. This is not severe because
I think the doors are recreated upon request.

Beat
Comment 1 Wayne Davison 2005-04-29 12:42:36 UTC
That's not a regular file.  Try the --devices option (running rsync as root).
Comment 2 Beat Müller 2005-05-02 00:26:56 UTC
I run rsync as root with options -aHx, and according to the man page -a
implies -D (--devices). Character and block devices are copied correctly,
only the Solaris doorfs is skipped.
Comment 3 Beat Müller 2005-05-03 03:16:04 UTC
I resaerched a bit and found this: The door fs, implemented under Solaris and
Linux, is a special file descriptor created by door_create. On this descriptor
sits an IPC structure that provides a fast IPC between processes on the same
box.

It makes IMO little sense to copy such descriptors because exist only as long
as the calling process exists. I could neither mv, cp or mknod them.

Therefore I propose the following for rsync:
- rsync acknowledges that there is a doorfs but does not copy such descriptors.
- the man page and other doc stuff is amended according to this.
- rsync skips door descriptors silently unless the verbosity level is high
  enough to report it.
- configure checks for door.h. If it is present a HAS_DOORFS is set in config.h
- The code is changed so that it ignores (and maybe reports) door descriptors
  inside "#ifdef DOORFS ... #endif" clauses