On Fri, May 22, 2009 at 07:44:18AM -0600, Scott Long wrote:
> John Baldwin wrote:
> >On Thursday 21 May 2009 6:11:02 pm Attilio Rao wrote:
> >>At this point I wonder what's the purpose of maintaining the sleeping
> >>version for such functions?
> >Actually, I still very much do not like using M_NOWAIT needlessly. I
> >would much rather the solution for make_dev() be that the 1 or 2 places
> >that need to do it with a mutex held instead queue a task to do the actual
> >make_dev() in a taskqueue when no locks are held. This is basically what
> >destroy_dev_sched() is doing. Perhaps a make_dev_sched() with a similar
> >callback to be called on completion would be better. Having a device
> >driver do all the work to setup the hardware only to fail to create a node
> >in /dev so that userland can actually use it is pretty rediculous and
> It's a lot easier for me to handle a failure of make_dev in CAM than it
> is to decouple the call to it. Please don't dictate policy.
The second patch I posted yesterday allows to specify the flag that means
"no sleep, could fail" to make_dev. Without the flag, make_dev behaves
in the current fashion, i.e. sleep, cannot fail.
Is this solution suitable for your needs ?