From owner-freebsd-hackers@freebsd.org Wed Nov 18 09:49:14 2015 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E597AA31AD9 for ; Wed, 18 Nov 2015 09:49:14 +0000 (UTC) (envelope-from danny@cs.huji.ac.il) Received: from mailman.ysv.freebsd.org (mailman.ysv.freebsd.org [IPv6:2001:1900:2254:206a::50:5]) by mx1.freebsd.org (Postfix) with ESMTP id CBFCB175B for ; Wed, 18 Nov 2015 09:49:14 +0000 (UTC) (envelope-from danny@cs.huji.ac.il) Received: by mailman.ysv.freebsd.org (Postfix) id CACBBA31AD8; Wed, 18 Nov 2015 09:49:14 +0000 (UTC) Delivered-To: hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B073DA31AD6 for ; Wed, 18 Nov 2015 09:49:14 +0000 (UTC) (envelope-from danny@cs.huji.ac.il) Received: from kabab.cs.huji.ac.il (kabab.cs.huji.ac.il [132.65.116.210]) by mx1.freebsd.org (Postfix) with ESMTP id 2CBB1175A; Wed, 18 Nov 2015 09:49:14 +0000 (UTC) (envelope-from danny@cs.huji.ac.il) Received: from chamsa.cs.huji.ac.il ([132.65.80.19]) by kabab.cs.huji.ac.il with esmtp id 1ZyzMM-000PCp-1p; Wed, 18 Nov 2015 11:49:02 +0200 Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2104\)) Subject: Re: kqueue of a nfs mounted file not working From: Daniel Braniss In-Reply-To: <564A8B6F.3080009@freebsd.org> Date: Wed, 18 Nov 2015 11:49:01 +0200 Cc: Rick Macklem , Konstantin Belousov , hackers@freebsd.org Message-Id: References: <9BC3EFA2-945F-4C86-89F6-778873B58469@cs.huji.ac.il> <20151115152635.GB5854@kib.kiev.ua> <3AEC67FD-2E67-4EF9-9D46-818ABF3D8118@cs.huji.ac.il> <661673285.88370232.1447682409478.JavaMail.zimbra@uoguelph.ca> <564A8B6F.3080009@freebsd.org> To: Alfred Perlstein X-Mailer: Apple Mail (2.2104) Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.20 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Nov 2015 09:49:15 -0000 > On 17 Nov 2015, at 04:05, Alfred Perlstein wrote: >=20 >=20 >=20 > On 11/16/15 6:00 AM, Rick Macklem wrote: >> Daniel Braniss wrote: >>>> On 15 Nov 2015, at 17:26, Konstantin Belousov = wrote: >>>>=20 >>>> 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. >>>=20 >> 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. >>=20 >> 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? >>=20 >> 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. >>=20 >> rick >>=20 > Hello Rick, >=20 > I implemented the VFS_SYSCTL work in NFS. The goal was to allow a = path to query filesystems via sysctl. >=20 > This was used in OS X to provide a way to query the filesystem for = "events". >=20 > = https://github.com/opensource-apple/xnu/blob/10.10/bsd/nfs/nfs_vfsops.c#L5= 188 = >=20 > For NFS you want to inform the user that an nfs filesystem is down, or = the locking daemon is down. That was inside a GUI you can pop up a = dialog box to allow the user to force-unmount or turn off locking. >=20 > Image you're connected to multiple NFS shares inside of X11 or = whatever windowing system you have. Then there is a network outage. = You'll want to know which filesystems are not responding and why. >=20 > -Alfred >=20 > -Alfred I found a workaround, not elegant, but works, I added a timeout to the kevent instead of Null. so now it=92s working in busy wait mode instead of event driven. I you plant add themishing links, I can heliport with the testing. thanks, danny