Re: Kernel deadlock using nbd over acenic driver

Peter T. Breuer (ptb@it.uc3m.es)
Wed, 29 May 2002 14:10:42 +0200 (MET DST)


"A month of sundays ago Pavel Machek wrote:"
> > > Init routine is called from insmod context or at kernel bootup (from pid==1).
> >
> > That's nitpicking!
>
> I did not want to be nitpicking. init() really is considered process

Well, OK.

> context, and it looks to me like unplug is *blocking* operation so it
> really needs proceess context.

unplug unsets the plugged flag and calls the request function. The
question is whether the request function is allowed to block. I argue
that it is not, on several grounds:

1) it's also - and principally - been called from various task
queues, which aren't really associated with a process context, and
certainly not with the process context that set the task

2) blocking is really bad news depending on how we got to the
request function, which is not a really predictable thing, since
i) it can change with every kernel version
ii) it depends on what somebody else does

3) if we block against memory for buffers, in particular, the
the system is now very likely to be dead, since VM just went
synchronous.

and probably you know lots better arguments!

Peter
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/