Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 25 Oct 2004 11:26:15 -0400
From:      Brian Fundakowski Feldman <green@freebsd.org>
To:        Sam <sah@softcardsystems.com>
Cc:        freebsd-arch@freebsd.org
Subject:   Re: 6.0 Witness squawk
Message-ID:  <20041025152615.GQ1072@green.homeunix.org>
In-Reply-To: <Pine.LNX.4.60.0410251037540.29901@athena>
References:  <Pine.LNX.4.60.0410251037540.29901@athena>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Oct 25, 2004 at 11:11:13AM -0500, Sam wrote:
> Hello,
> 
> I'm almost finished porting my AoE (ATA over Ethernet)
> driver to 6.0 and have a question about a complaint witness
> is making.
> 
> In general, is it ok to sleep with a mutex held?
> 
> Specifically, it works like this in the driver.
> Each device struct has a mutex for guarding
> operations on it.  Discovering devices is a two
> step process.  First the device must respond to
> an AoE Query command, then it must respond to
> an ATA identify command.  On the response to
> the latter, I grab the device mutex, examine
> the response and call disk_alloc() and disk_create().
> 
> Both of these functions call malloc with M_WAITOK,
> the latter triggers the witness message.
> 
> In my situation, I don't really mind if I sleep
> with the mutex since I can't do any useful work
> with the device anyway.
> 
> This does leave the possibility that the netisr
> for AoE could sleep.
> 
> Thoughts?

If you can't do any useful work, why do you have the mutex?  Leave
the mutex operations for when exclusivity _is_necessary_, after the
major parts of initialization.  No, it's not okay to sleep with a
mutex held -- it must be dropped a la msleep/cv/whatever.

-- 
Brian Fundakowski Feldman                           \'[ FreeBSD ]''''''''''\
  <> green@FreeBSD.org                               \  The Power to Serve! \
 Opinions expressed are my own.                       \,,,,,,,,,,,,,,,,,,,,,,\



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20041025152615.GQ1072>