Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 25 Oct 2004 11:11:13 -0500 (EST)
From:      Sam <sah@softcardsystems.com>
To:        freebsd-current@freebsd.org, freebsd-arch@freebsd.org
Subject:   6.0 Witness squawk
Message-ID:  <Pine.LNX.4.60.0410251037540.29901@athena>

next in thread | raw e-mail | index | archive | help
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?

Cheers,

Sam



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