From owner-freebsd-current@FreeBSD.ORG Thu Nov 15 07:43:00 2007 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CBD5516A418 for ; Thu, 15 Nov 2007 07:43:00 +0000 (UTC) (envelope-from mcdouga9@egr.msu.edu) Received: from mx.egr.msu.edu (surfnturf.egr.msu.edu [35.9.37.164]) by mx1.freebsd.org (Postfix) with ESMTP id 8AF1113C4C5 for ; Thu, 15 Nov 2007 07:43:00 +0000 (UTC) (envelope-from mcdouga9@egr.msu.edu) Received: from localhost (localhost.egr.msu.edu [127.0.0.1]) by mx.egr.msu.edu (Postfix) with ESMTP id 882872EB99A; Thu, 15 Nov 2007 02:42:48 -0500 (EST) X-Virus-Scanned: amavisd-new at egr.msu.edu Received: from mx.egr.msu.edu ([127.0.0.1]) by localhost (surfnturf.egr.msu.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id rNk5JyqKIWU4; Thu, 15 Nov 2007 02:42:48 -0500 (EST) Received: from localhost (daemon.egr.msu.edu [35.9.44.65]) by mx.egr.msu.edu (Postfix) with ESMTP id 44E4A2EB8F4; Thu, 15 Nov 2007 02:42:48 -0500 (EST) Received: by localhost (Postfix, from userid 21281) id 30BE333C22; Thu, 15 Nov 2007 02:42:48 -0500 (EST) Date: Thu, 15 Nov 2007 02:42:48 -0500 From: Adam McDougall To: freebsd-current@freebsd.org Message-ID: <20071115074247.GQ37473@egr.msu.edu> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="SUOF0GtieIMvvwua" Content-Disposition: inline User-Agent: Mutt/1.5.16 (2007-06-09) X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: tss@iki.fi Subject: link() not increasing link count on NFS server X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Nov 2007 07:43:00 -0000 --SUOF0GtieIMvvwua Content-Type: text/plain; charset=us-ascii Content-Disposition: inline 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. 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 --SUOF0GtieIMvvwua--