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_at_FreeBSD.org \ The Power to Serve! \ Opinions expressed are my own. \,,,,,,,,,,,,,,,,,,,,,,\Received on Mon Oct 25 2004 - 13:26:18 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:19 UTC