Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 Nov 2015 09:00:09 -0500 (EST)
From:      Rick Macklem <rmacklem@uoguelph.ca>
To:        Daniel Braniss <danny@cs.huji.ac.il>
Cc:        Konstantin Belousov <kostikbel@gmail.com>, hackers@freebsd.org
Subject:   Re: kqueue of a nfs mounted file not working
Message-ID:  <661673285.88370232.1447682409478.JavaMail.zimbra@uoguelph.ca>
In-Reply-To: <3AEC67FD-2E67-4EF9-9D46-818ABF3D8118@cs.huji.ac.il>
References:  <9BC3EFA2-945F-4C86-89F6-778873B58469@cs.huji.ac.il> <20151115152635.GB5854@kib.kiev.ua> <3AEC67FD-2E67-4EF9-9D46-818ABF3D8118@cs.huji.ac.il>

next in thread | previous in thread | raw e-mail | index | archive | help
Daniel Braniss wrote:
> 
> > On 15 Nov 2015, at 17:26, Konstantin Belousov <kostikbel@gmail.com> wrote:
> > 
> > On Sun, Nov 15, 2015 at 11:22:55AM +0200, Daniel Braniss wrote:
> >> HI,
> >> I???m writing a program to monitor a file using kqueue(2), if the file is
> >> local
> >> all is OK, but if the file is via a nfs mounted fs, it only works once.
> >> stat shows the file growing, but kevent is not triggered.
> > 
> > Does file grow due to local changes on the nfs client, or some other
> > client changes the file, while your client tries to get kevent
> > notifications ?
> 
> it gets updated by a host which has the file as local, so yes, it gets
> updated
> by another client/host.
> 
Hmm, I am not surprised that this doesn't work. The only indication to the
client that the file has changed on the server is a change in the file's
attributes when they're acquired (via a Getattr RPC or similar) from the server.

There is a vfs operation called VFS_SYSCTL(). This isn't implemented on
the current NFS client. It was implemented on the old one, but only for
NFS locking events and I didn't understand what needed to be done, so I
didn't do it.
Kostik, do you know if there is a VFS_SYSCTL() call done when the kevent
stuff is probing for a file size change? (Or does it not probe and events
get triggered via the write syscall or ???) I took a quick look at the kevent
stuff, but admit I got lost and couldn't figure out what triggered events
being logged?

Also, is the event for "file growing" or "file changed"?
If it is the latter, all the NFS client can do is look for a change in
the file's modify time and this is often at a resolution of 1sec., which
implies that a change within the same second as the previous one may not
be noticed. (NFSv4 has a Change attribute that is always guaranteed to
change, but that is only NFSv4.) Also, you see metadata changes as well
as data changes, at least for the NFSv4 attribute.

rick

> 
> _______________________________________________
> freebsd-hackers@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"
> 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?661673285.88370232.1447682409478.JavaMail.zimbra>