From owner-freebsd-stable@FreeBSD.ORG Mon Feb 1 14:49:54 2010 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7BD3D1065693; Mon, 1 Feb 2010 14:49:54 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 3778A8FC15; Mon, 1 Feb 2010 14:49:54 +0000 (UTC) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id C376F46B38; Mon, 1 Feb 2010 09:49:53 -0500 (EST) Received: from jhbbsd.localnet (smtp.hudson-trading.com [209.249.190.9]) by bigwig.baldwin.cx (Postfix) with ESMTPA id CC1678A024; Mon, 1 Feb 2010 09:49:52 -0500 (EST) From: John Baldwin To: Marius Strobl Date: Mon, 1 Feb 2010 09:46:57 -0500 User-Agent: KMail/1.12.1 (FreeBSD/7.2-CBSD-20100120; KDE/4.3.1; amd64; ; ) References: <20100126073336.GA1955@server.vk2pj.dyndns.org> <20100131010618.GA1864@server.vk2pj.dyndns.org> <20100131162854.GC77522@alchemy.franken.de> In-Reply-To: <20100131162854.GC77522@alchemy.franken.de> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201002010946.57253.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (bigwig.baldwin.cx); Mon, 01 Feb 2010 09:49:52 -0500 (EST) X-Virus-Scanned: clamav-milter 0.95.1 at bigwig.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-1.3 required=4.2 tests=AWL,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bigwig.baldwin.cx Cc: rmacklem@freebsd.org, dfr@freebsd.org, freebsd-stable@freebsd.org, Peter Jeremy Subject: Re: uma_zalloc_arg complaining about non-sleepable locks X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Feb 2010 14:49:54 -0000 On Sunday 31 January 2010 11:28:54 am Marius Strobl wrote: > On Sun, Jan 31, 2010 at 12:06:18PM +1100, Peter Jeremy wrote: > > Sorry for the delay, I was trying to avoid rebooting my server. > > I've setup a similar environment in VirtualBox to test it. > > > > On 2010-Jan-27 12:52:29 +0100, Marius Strobl wrote: > > >Ah, I forgot that using nfsm_aligned() causes nfs_realign() to > > >be a NOP on architectures without strict alignment requirements > > >for performance reasons. That's generally fine but unfortunately > > >that way you don't actually exercise the code which caused the > > >problem before (unfortunately I still don't manage to hit the > > >unaligned case myself). > > > > >Could you please test with #ifdef __NO_STRICT_ALIGNMENT replaced > > >with #if 0 in sys/nfs/nfs_common.h? The vfs.nfs.realign_count > > >counter should also increase then. > > > > I'm not sure what triggers the unaligned case either - I tried > > roughly "tar -cf - -C /mnt/usr src | tar -xf - -C /mnt/tmp" and > > that caused some unaligned accesses (but also completely wedged > > the VBox host). I also tried copying a pile of files off my > > NFS client (FreeBSD-8.x/i386) and that also triggered some > > unaligned accesses without any errors being reported. > > > > Currently, I have: > > vfs.nfs.realign_count: 12 > > vfs.nfs.realign_test: 188817 > > > > I'd say that your patch works. > > John, are you okay with that patch? > http://people.freebsd.org/~marius/fha_extract_info_realign2.diff > > It's intention is to: > - Move nfs_realign() from the NFS client to the shared NFS code and > remove the NFS server version in order to reduce code duplication. > The shared version now uses a second parameter how, which is passed > on to m_get(9) and m_getcl(9) as the server used M_WAIT while the > client requires M_DONTWAIT, and replaces the the previously unused > parameter hsiz. > - Change nfs_realign() to use nfsm_aligned() so as with other NFS code > the alignment check isn't actually performed on platforms without > strict alignment requirements for performance reasons because as the > comment suggests only occasionally occurs with TCP. > - Change fha_extract_info() to use nfs_realign() with M_NOWAIT rather > than M_DONTWAIT because it's called with the RPC sp_lock held. > > The only downside of the shared nfs_realign() are the combined > SYSCTL counters but the fact we incremented them non-atomically > so far I think already indicates that their intention only is a > rough indication rather than exact values for client and server. This all sounds good to me, but isn't M_NOWAIT == M_DONTWAIT? Hmm, reading the code more closely, it looks like fha_extract_info() was using M_WAIT rather than M_DONTWAIT previously. Also, I think you should be careful to use M_DONTWAIT instead of M_NOWAIT for mbufs, so I would fix that in fha_extract_info(). -- John Baldwin