Date: Wed, 17 Jan 2001 15:22:50 -0800 From: Alfred Perlstein <bright@wintelcom.net> To: Bosko Milekic <bmilekic@technokratis.com> Cc: Randell Jesup <rjesup@wgate.com>, dillon@FreeBSD.ORG, Soren Schmidt <sos@freebsd.dk>, arch@FreeBSD.ORG, current@FreeBSD.ORG Subject: Re: HEADS-UP: await/asleep removal imminent Message-ID: <20010117152250.D7240@fw.wintelcom.net> In-Reply-To: <012a01c080d5$fc532270$1f90c918@jehovah>; from bmilekic@technokratis.com on Wed, Jan 17, 2001 at 05:36:50PM -0500 References: <200101171138.MAA11834@freebsd.dk> <ybug0iixiee.fsf@jesup.eng.tvol.net.jesup.eng.tvol.net> <20010117092109.O7240@fw.wintelcom.net> <20010117100516.Q7240@fw.wintelcom.net> <012a01c080d5$fc532270$1f90c918@jehovah>
next in thread | previous in thread | raw e-mail | index | archive | help
* Bosko Milekic <bmilekic@technokratis.com> [010117 14:35] wrote: > > Alfred Perlstein wrote: > > > Which means we don't have to drop the lock over the socket unless > > we'd block on allocation. > > No. You'd still have to drop it for now. Remember? (Last commit to > uipc_mbuf.c). You have to drop it because of the problem you may have if > Giant is gotten before your sockbuf/socket lock. In the allocation, you may > be acquiring Giant again. I don't know the exact semantics, but if you at > some point may grab the sockbuf/socket lock without already holding Giant and > call the allocation routine, you're opening the door for deadlock. The rest of the patches unwind giant on entry into the socket layer so grabbing Giant shouldn't be a problem. > > Matt, is this what you intended for it to do? So far I've only > > seen it used to avoid races, but not to optimize out mutex > > aquire/release. > > I've only seen it to be useful to avoid races. If you're holding a lock > and you need to sleep but if you drop the lock before you actually switch you > may get woken up and never find out, thus still going to sleep. With the > asleep you could hold the lock and place yourself on the sleep queue such > that when you drop the lock and call await, you'll find out if you've gotten > awoken (you'll be removed from the sleep queue). With the interlocking with > sched_lock now down in msleep(), this "feature" of asleep/await is useless. Read the rest of my posts, the ones not cc'd to everyone, just Matt and -arch. -- -Alfred Perlstein - [bright@wintelcom.net|alfred@freebsd.org] "I have the heart of a child; I keep it in a jar on my desk." To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010117152250.D7240>