From owner-freebsd-current@FreeBSD.ORG Thu Jun 24 05:28:09 2004 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 56D4C16A4CE; Thu, 24 Jun 2004 05:28:09 +0000 (GMT) Received: from black3.imgsrc.co.jp (black3.imgsrc.co.jp [210.226.20.147]) by mx1.FreeBSD.org (Postfix) with ESMTP id 1689843D62; Thu, 24 Jun 2004 05:28:09 +0000 (GMT) (envelope-from kuriyama@imgsrc.co.jp) Received: from localhost (localhost [127.0.0.1]) by black3.imgsrc.co.jp (Postfix) with ESMTP id 4B84350B50; Thu, 24 Jun 2004 14:28:01 +0900 (JST) Received: from black3.imgsrc.co.jp (black3.imgsrc.co.jp [IPv6:2001:218:422:2::9999]) by black3.imgsrc.co.jp (Postfix) with ESMTP id EC31850B66; Thu, 24 Jun 2004 14:27:59 +0900 (JST) Date: Thu, 24 Jun 2004 14:27:59 +0900 Message-ID: <7m3c4lle3k.wl@black3.imgsrc.co.jp> From: Jun Kuriyama To: Current In-Reply-To: <7mbrjisoto.wl@black3.imgsrc.co.jp> References: <7mbrjisoto.wl@black3.imgsrc.co.jp> User-Agent: Wanderlust/2.10.1 (Watching The Wheels) SEMI/1.14.6 (Maruoka) FLIM/1.14.6 (Marutamachi) APEL/10.6 Emacs/21.3 (i386--freebsd) MULE/5.0 (SAKAKI) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII X-Virus-Scanned: by amavisd 0.1 cc: rwatson@FreeBSD.org Subject: Re: malloc(M_WAITOK) of "32", forcing M_NOWAIT X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 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, 24 Jun 2004 05:28:09 -0000 At Thu, 17 Jun 2004 06:07:03 +0000 (UTC), kuriyama wrote: > malloc(M_WAITOK) of "32", forcing M_NOWAIT with the following non-sleepable locks held: > exclusive sleep mutex nfsd_mtx r = 0 (0xc0745be0) locked @ nfsserver/nfs_srvcache.c:220 > Stack backtrace: > backtrace(1,c06e06e0,c1035420,1,e4dffc24) at backtrace+0x12 > witness_warn(5,0,c06a35df,c067fc35) at witness_warn+0x18e > uma_zalloc_arg(c1035420,0,2) at uma_zalloc_arg+0x38 > malloc(1c,c06e06e0,2,c4a80100,c3cffa00) at malloc+0xb2 > sodupsockaddr(c4c0af40,2,e4dffc78,40d11376,c3a47480) at sodupsockaddr+0x19 > nfsrv_getcache(c3cffa00,e4dffca8,0,2,2) at nfsrv_getcache+0x323 > nfssvc_nfsd(c3b0e000,c051627f,c0707920,0,c068f808) at nfssvc_nfsd+0x2b9 > nfssvc(c3b0e000,e4dffd14,2,0,292) at nfssvc+0x17b > syscall(2f,2f,2f,bfbfeec4,1) at syscall+0x217 > Xint0x80_syscall() at Xint0x80_syscall+0x1f > --- syscall (155), eip = 0x280c42fb, esp = 0xbfbfeb2c, ebp = 0xbfbfeb48 --- I don't know how to fix correctly. But it has disappeared with following patch. Grrr. Index: nfs_srvcache.c =================================================================== RCS file: /home/ncvs/src/sys/nfsserver/nfs_srvcache.c,v retrieving revision 1.38 diff -u -r1.38 nfs_srvcache.c --- nfs_srvcache.c 24 May 2004 04:06:14 -0000 1.38 +++ nfs_srvcache.c 22 Jun 2004 06:28:12 -0000 @@ -247,10 +247,19 @@ break; /* case AF_INET6: */ /* case AF_ISO: */ - default: + default: { + struct sockaddr *sa2; rp->rc_flag |= RC_NAM; - rp->rc_nam = sodupsockaddr(nd->nd_nam, M_WAITOK); + if (rp->rc_flag | RC_LOCKED) { + NFSD_UNLOCK(); + } + sa2 = sodupsockaddr(nd->nd_nam, M_WAITOK); + if (rp->rc_flag | RC_LOCKED) { + NFSD_LOCK(); + } + rp->rc_nam = sa2; break; + } }; rp->rc_proc = nd->nd_procnum; LIST_INSERT_HEAD(NFSRCHASH(nd->nd_retxid), rp, rc_hash); -- Jun Kuriyama // IMG SRC, Inc. // FreeBSD Project