On Tue, 2011-01-25 at 14:38 -0800, Nathan March wrote: > Ah ha, yes, it's using a stat call. > > What would be the proper C call to check the file exists without > incurring the stat()? access("file", F_OK) should do it. Cheers Trond > On 1/25/2011 2:28 PM, Trond Myklebust wrote: > > On Tue, 2011-01-25 at 14:11 -0800, Nathan March wrote: > >> Hi All, > >> > >> Having a strange issue, I've reproduced this both on nfs 3 and 4. > >> Currently using v4 with: > >> > >> exports: > >> /var/home/voyage > >> 10.2.1.0/24(rw,fsid=0,async,wdelay,secure,no_subtree_check,anonuid=1000,anongid=1006) > >> > >> fstab: > >> 10.2.1.1:/ /mnt/voyage nfs4 > >> rsize=32768,wsize=32768,noatime,nosuid,rw,bg,hard,intr 0 0 > >> > >> Can be produced using these two commands on 2 machines: > >> > >> perl -le '$| = 1 ; while (1) { sleep 1; $res = -e "/home/voyage/test"; > >> if ($res) { print "-e : $res"; } else { print "-e : $res ($!)"; } }' > >> -e : 1 > >> > >> perl -le '$| = 1 ; while (1) { sleep 5; open(F, ">", > >> "/home/voyage/test.foo"); close F; my $res = > >> rename("/home/voyage/test.foo", "/home/voyage/test"); print "rename > >> ($res)"; }' > >> > >> The first command will occasionally print out: -e : (Stale NFS file handle) > >> > >> Now according to http://nfs.sourceforge.net/#faq_a10 as of 2.6.12 the > >> vfs should automatically retry when it gets a estale during path > >> resolution. This doesn't appear to be happening though based on the > >> errors I'm seeing. > >> > >> Anyone have any thoughts on what might be happening here? Or am I > >> misinterpreting that faq entry? (This is on ext3 if it matters) > > Does '-e' in perl only do a lookup, or does it result in a 'stat()' > > call? If the latter, then your test is flawed: a stat() is a lookup+a > > getattr, and the latter can definitely return ESTALE when you are > > constantly replacing the file. > > > > Cheers > > Trond -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@xxxxxxxxxx www.netapp.com -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html