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>