From owner-cvs-all@FreeBSD.ORG Thu Jan 25 18:56:11 2007 Return-Path: X-Original-To: cvs-all@FreeBSD.org Delivered-To: cvs-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 46C4916A404 for ; Thu, 25 Jan 2007 18:56:11 +0000 (UTC) (envelope-from mohan_srinivasan@yahoo.com) Received: from web30806.mail.mud.yahoo.com (web30806.mail.mud.yahoo.com [68.142.200.149]) by mx1.freebsd.org (Postfix) with SMTP id EC2D013C44B for ; Thu, 25 Jan 2007 18:56:10 +0000 (UTC) (envelope-from mohan_srinivasan@yahoo.com) Received: (qmail 1666 invoked by uid 60001); 25 Jan 2007 18:56:10 -0000 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=X-YMail-OSG:Received:Date:From:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-ID; b=gra6qNFXiKW07EcBvuy+dzrWMs1SlCTQs/W81tn8JmsCypTFcaQ7pjGSPPsbjBQ66c2tNSMf6Oj+p9WXZDZs2J6Cm6kD2MmWMdQaUeu12CveiIl2VTLj0j5kL7I683mkuHjHhk2FfOBndmgAzCUolFQmv0o5XcXt5U1xbud6I4o=; X-YMail-OSG: 0JhgAAwVM1mqSQCzGZxE4XCZtjDGdxWzaEeHkt0Krk7ASx3RqD00gQj9DiREo5ak.WWxlg-- Received: from [207.88.215.11] by web30806.mail.mud.yahoo.com via HTTP; Thu, 25 Jan 2007 10:56:09 PST Date: Thu, 25 Jan 2007 10:56:09 -0800 (PST) From: Mohan Srinivasan To: Gleb Smirnoff , Mohan Srinivasan In-Reply-To: <20070125102921.GK4485@FreeBSD.org> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Message-ID: <91560.391.qm@web30806.mail.mud.yahoo.com> Cc: cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/kern kern_mbuf.c src/sys/sys mbuf.h src/sys/vm uma.h uma_core.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 25 Jan 2007 18:56:11 -0000 Hi Gleb, Sorry. Lost power at home earlier this morning and was operating on very low laptop battery power (and stealing network bandwidth from my neighbor over his unsecured wireless network :)), so sent you a brief reply earlier. We have this bit of logic in uma_zfree_arg() /* See uma.h */ void uma_zfree_arg(uma_zone_t zone, void *item, void *udata) { ... ... /* * The race here is acceptable. If we miss it we'll just have to wait * a little longer for the limits to be reset. */ if (keg->uk_flags & UMA_ZFLAG_FULL) goto zfree_internal; ... ... zfree_internal: uma_zfree_internal(zone, item, udata, SKIP_DTOR, ZFREE_STATFREE); return; And uma_zfree_internal() frees the object back to the slab and wakes up all blocked processes (one of which will proceed) and the others will reset ZFLAG_FULL and block. But as objects get freed, they should all get freed to the slab as long as ZFLAG_FULL is set, and blocked procs woken up. > P.S. Let me do a small style nit-pick. :) All the UMA public functions are > preceeded with "uma_", so it will be more nice to create a public uma_zone_drain(), > that just calls internal zone_drain(). Like uma_print_stats() or uma_zdestroy() > are. I'll do this. thanks mohan