Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Nov 2007 15:12:00 +0200
From:      Timo Sirainen <tss@iki.fi>
To:        Robert Watson <rwatson@FreeBSD.org>
Cc:        Adam McDougall <mcdouga9@egr.msu.edu>, freebsd-current@FreeBSD.org
Subject:   Re: link() not increasing link count on NFS server
Message-ID:  <1195132320.6039.135.camel@hurina>
In-Reply-To: <20071115123543.H82897@fledge.watson.org>
References:  <20071115074247.GQ37473@egr.msu.edu> <20071115123543.H82897@fledge.watson.org>

next in thread | previous in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
On Thu, 2007-11-15 at 12:39 +0000, Robert Watson wrote:
> > or Solaris NFS clients. Basically, Timo (cc'ed) came up with a small test 
> > case that seems to indicate sometimes a link() call can succeed while the 
> > link count of the file will not increase.  If this is ran on two FreeBSD 
> > clients from the same NFS directory, you will occasionally see "link() 
> > succeeded, but link count=1".  I've tried both a Netapp and a FreeBSD NFS 
..
> My guess, and this is just a hand-wave, is that the attribute cache in the NFS 
> client isn't being forced to refresh, and hence you're getting the old stat 
> data back (and perhaps there's no GETATTR on the wire, which might hint at 
> this).  If you'd like, you can post a link to the pcap capture file and one of 
> us can take a look, but I've found NFS RPCs to be surprisingly readable in 
> Wireshark so you might find it sheds quite a bit of light.

Actually the point was that link() returns success even though in
reality it fails. The fstat() was just a workaround to catch this case
and treat link count 1 as if link() had failed with EEXIST. After that I
had no more problems with locking.

I noticed this first because my dotlocking was failing to lock files
properly. I also added fchown() to flush attribute cache after link()
and before fstat(), it gives the same link count=1 reply.


[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQBHPEWgyUhSUUBViskRAgdUAJ9oxcaapCx9OHuzztVA0DCjGA4VkwCgjZ3j
cILNJPWfmbnGnqjX9NPnaxM=
=6qV6
-----END PGP SIGNATURE-----

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