Re: link() not increasing link count on NFS server

From: Kip Macy <kip.macy_at_gmail.com>
Date: Wed, 14 Nov 2007 23:45:50 -0800
On Nov 14, 2007 11:42 PM, Adam McDougall <mcdouga9_at_egr.msu.edu> wrote:
> Hi, lately I've been trying to work out some NFS multiple access issues relating
> to the Dovecot IMAP server software.  One symptom seems to be an unusual behavior
> of FreeBSD NFS clients that I cannot reproduce with Linux 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 server.  I've tried FreeBSD 7_RELENG clients as well as
> FreeBSD 6.2-stable from this summer.  I've ran it on 32bit and 64bit clients.
> I've turned rpc.lockd on and off, tried tcp vs. udp mounts, nothing so far seems
> to make a difference, except perhaps FreeBSD 7.0 seems to produce the error less
> often.  If one of the processes is ran on a non-FreeBSD NFS cliemt, only the
> FreeBSD NFS client gives the link error.  Anyone have any input?  Thanks.

Is this with both TCP and UDP clients? We're planning on making the default TCP.


-Kip

>
>
> How to reproduce (local binary is fine too, may be required if different arch):
> ------------------
>
> cp locktest.c /nfsserver
> cd /nfsserver
> gcc locktest.c -o locktest -Wall -g
>
> On host 1:
> cd /nfsserver
> ./locktest temp1
>
> On host 2: (easiest to reproduce when starting just a few seconds after 1)
> cd /nfsserver
> ./locktest temp2
>
>
> Typical output (timing may vary):
> ----------------------------------
>
> Host 1:
>
> > /tmp/locktest temp1
> 5 successes
> 15 successes
> unlink(): No such file or directory         (not a problem indication, happens
> 19 successes                                 when second process starts)
> 20 successes
> link() succeeded, but link count=1
> 20 successes
> link() succeeded, but link count=1
> 20 successes
> 33 successes
> 33 successes
> link() succeeded, but link count=1
> 33 successes
> 45 successes
> link() succeeded, but link count=1
> 45 successes
> 45 successes
> link() succeeded, but link count=1
> ^C
>
> Host 2:
>
> > /tmp/locktest temp2
> 6 successes
> 15 successes
> 25 successes
> 38 successes
> 39 successes
> 50 successes
> 59 successes
> link() succeeded, but link count=1
> 59 successes
> 69 successes
> 79 successes
> 91 successes
> 99 successes
> 109 successes
> ^C
>
>
> _______________________________________________
> freebsd-current_at_freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org"
>
Received on Thu Nov 15 2007 - 06:45:58 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:22 UTC