I've told you this before -- sleeping in make_request is not illegal,
heck it happens _all the time_. Safely sleeping requires a reserved pool
of the units you wish to allocate, of course. In fact I think that would
be much nicer than the path you are following here by delaying
allocations to the loop thread (and still not using a reserved pool).
Briefly looking through the patch.
- loop_put_buffer(), it looks racy to check waitqueue_active there.
- if(!bh) return((struct buffer_head *)0);
eww!
- Also, please adher to the style. VaRiAbLe names can hurt the eyes, and
stuff like
if (something) break;
return(val);
etc don't belong too. Could you fix that up?
That said, thanks for fixing it!
-- Jens Axboe- 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/