Re: Kernel deadlock using nbd over acenic driver

From: Peter T. Breuer (ptb@it.uc3m.es)
Date: Wed May 29 2002 - 07:10:42 EST


"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/



This archive was generated by hypermail 2b29 : Fri May 31 2002 - 22:00:25 EST