Jens Axboe wrote: > On Wed, Mar 20 2002, Jari Ruusu wrote: > > And, about sleeping in loop_make_request(), I have also changed the code in > > such way that it defaults to code that may sleep in loop_make_request(). But > > non-sleeping code is still present (but not currently used), like this: > > > > #if 1 > > may-sleep-in-loop_make_request-code-here > > #else > > non-sleeping-loop_make_request-code-here > > #endif > > The solution I prefer is to have loop_make_request() block when we run > out of pre-allocated buffers, ie similar to "normal" block drivers when > they run out of request slots. This provides a nice throttling mechanism > and makes sure that loop doesn't eat into the memory polls too heavily. > > In any way, do it one way and remove the other. OK, non-sleeping code is gone. > > 2.4.19-pre3 loop code wanders to loop_get_buffer() and transfer function in > > LO_FLAGS_BH_REMAP optimization case. > > So the 'new' version does exactly the same, but doesn't do it in > loop_get_buffer(). I found a new bug in stock loop driver: LO_FLAGS_BH_REMAP optimization is never enabled because init hook for type 0 transfer is never executed. That bug is not dangerous, but is not fixed by patch that I posted here yesterday... so here is new one that fixes it. Herbert Valerio Riedel wrote: > ...well, you still haven't honored my modest wish of the innocent 2 > #define's and 1 typedef... Your cryptoapi specific defines and typedef are now included. Regards, Jari Ruusu