Bug 24280 - fam-oss-2.6.10 ebuild makes fam unable to connect to a remote fam
|
Bug#:
24280
|
Product: Gentoo Linux
|
Version: unspecified
|
Platform: All
|
|
OS/Version: Linux
|
Status: RESOLVED
|
Severity: normal
|
Priority: P2
|
|
Resolution: FIXED
|
Assigned To: nick@capital-internet.net
|
Reported By: danny_milo@yahoo.com
|
|
Component: Ebuilds
|
|
|
URL:
|
|
Summary: fam-oss-2.6.10 ebuild makes fam unable to connect to a remote fam
|
|
Keywords:
|
|
Status Whiteboard:
|
|
Opened: 2003-07-11 07:42 0000
|
Hi!
The fam-oss-2.6.10 ebuild makes fam unable to connect to a remote fam (and fam-oss-2.6.9 did too) .
I am not talking about local_only=True, I set that back to "false", but about the actual ability to
contact a remote fam (or the check to see if file X is remote or local, dunno).
I downloaded fam-2.6.10 and the dnotify patch from sgi, compiled, installed by hand, and it worked
fine. So the problem can be narrowed down to have to be in some of the additional things the ebuild
does (in addition to applying the dnotify patch and compiling)...
I think there is some glitch in the ebuild or in some of the additional patches the ebuild uses...
Reproduction:
Host 1: start fam
Host 2: set local_only = False, start fam
Host 2: go to your favourite filemanager, point it to an nfs mounted directory (host 1 mount)
Host 1: change a file
Host 2: didn't notice until *very* far in the future
If you need any more info etc, I'll be glad to help... I'm just at a loss on where to start looking, I think
the original author of all these patches would know better than me ;)
Also, how's the linux kernel imon patch going ? I'd like to switch to imon because dnotify has poor
performance anyways - even if it works :)
Change the line in the 2.6.10 ebuild from dnotify.patch.new to dnotify.patch
and let me know if you still have problems.
re: imon it is available as an option in the gentoo-sources-2.4.20-r5 kernel
which is currently stable... i'm not sure when it first was in.
ooookay... The Problem is in the KERNEL... geeeeez that was a hell of a
debugging session ;)
reproduction:
int main(int argc, char *argv[])
{
struct statvfs fs_status;
/*"/mnt/ifurita-logs/syslog"*/
int rc = statvfs(argv[1], &fs_status);
if (rc >= 0) {
printf("OK %d\n", fs_status.f_fsid);
}
return 0;
}
and call this with a nfs mounted directory. It returns 0 (for "root file
system"), which is wrong.
confirmed with linux-2.4.21 and linux-2.5.75 :(
gah, never handled kernel bugs, what now ?
argh, #include <sys/statvfs.h> ....
statvfs
- works for xfs partitions
- does not work for ext2,ext3,nfs
- others untested
Did you ever try our 1.6.10 ebuild changing the dnotify.patch.new line to
dnotify.patch?
yes, I did, but it did not help ... then I started debugging to find out why it
still doesn't and discovered the cause, Until that is fixed, it can be worked
around by #undef'ing HAVE_STATVFS in config.h (so that HAVE_STATVFS never is
defined and thus never is used). (after configure)
Then it works in all cases. Local. Remote. Links. :D
btw, the comment for HAVE_STATVFS in config.h reads like this:
/* Define if we have statvfs. Otherwise, statfs will be used. */
That's a lie ;) statfs is never used. It just uses regular (string) pathname expansion in case statvfs is unavailable. Slower but works.
I think the automake stuff could be patched to compile a test program which checks the fsid for 0, and, if it is, screams in terror, and disables statvfs... but I cannot do stuff in automake that good yet... sorry...
#
# local_only makes fam ignore requests from remote clients & remote fams.
# Note that this is ignored if fam is started by inetd.
#
# The -L command-line argument overrides this option.
#
local_only = true
In your scenario you have set local_only = false on Host 2. It would seem that you need to put local_only = false on Host 1 though as that is the host that is getting "requests from remote clients & remote fams"
Please change the setting on Host 1 and let me know if you fine things to be working properly.
I just checked... I have local_only=false on both machines
That's a lie ;) statfs is never used. It just uses regular (string) pathname
expansion
in case statvfs is unavailable. Slower but works.
When you said that, what do you mean, slower but works? Are there possible
problems with NOT using statvfs?
no, its just slower... (multiple string manipulation operations as opposed to
comparing two dwords per request)
I use the string-parsing (non-statvfs) version without any problems...
fam-2.6.10/TODO:- configure.in ignores the test for sys/statvfs.h on Linux
because the f_fsid
hrm...
anyway... i have added 2.6.10-r1 to portage which changes the statvfs stuff.
Please test and let me know if things work as expected. :)
yup, woriks fine now :)
Thanks ! :)
More verification needs to happen before this is considered a stable ebuild but
I am hoping that this change is a positive one. :)
This bug has made for very informative reading. In any case, I am just posting
to say that fam-oss-2.6.10-r1 works very well for me in all cases. On my
workstation with a NFS mounted /home, changes display instantaneously in
Nautilus. Also, my server has courier-imap-2.0.0 running (comiled against
libfam, also 2.6.10-r1 for IMAP IDLE support) and all is well. :)