We have patched a RHEL5 (5.3) kernel with the latest 2.5.1 unionfs patches.
We started with the 2.6.18.8 patch set, and modified it until it went into
RH's heavily modified kernel.  We didn't have to do do much (most remove
stuff that RH already had).

In the end, things seem to work Ok except that UNIX domain sockets that are
created within a unionfs writeable layer do not work.  They can be created
(nc -lU /var/run/mysocket), but we receive an ECONNREFUSED when the client
tries to connect (nc -U /var/run/mysocket).

r...@ce1:/root> cat /proc/mounts | grep union
none /var unionfs rw,dirs=/tmp/var=rw:/var=ro 0 0

We were using an earlier version of unionfs (2.4) on RHEL5, and while we had
problems (prompting the move to 2.5.1), the UNIX sockets worked fine.

For the life of us, we cannot figure out why UNIX sockets in unionfs 2.4
worked and 2.5.1 does not.  In addition, we have other kernels with unionfs
2.4, and they seem to work as well (no other 2.5.1 examples).  We have
compared the two patch sets, but don't see any obvious differences that
would introduce this behavior.

The UNIX socket created in the unionfs layer shows up correctly as a socket,
and is listed in /proc/net/unix.

Could this be a 2.5.1 issue?  Anyone want to make a suggestion where we
might start looking deeper?  We suspect the connect() call is getting back
some bogus info on a dentry or i_ino value, but we can't see where by
inspection.  It looks like all the code that deals with the special files
(S_ISSOCK(mode)) is the same between versions of unionfs.

Any help would be appreciated.

Thanks,
Craig
_______________________________________________
unionfs mailing list: http://unionfs.filesystems.org/
unionfs@mail.fsl.cs.sunysb.edu
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs

Reply via email to