Messages in this thread | | | Date | Mon, 3 Sep 2012 20:41:00 -0700 | From | Kent Overstreet <> | Subject | Re: [PATCH v7 9/9] block: Avoid deadlocks with bio allocation by stacking drivers |
| |
On Mon, Sep 03, 2012 at 04:41:37PM -0400, Mikulas Patocka wrote: > ... or another possibility - start a timer when something is put to > current->bio_list and use that timer to pop entries off current->bio_list > and submit them to a workqueue. The timer can be cpu-local so only > interrupt masking is required to synchronize against the timer. > > This would normally run just like the current kernel and in case of > deadlock, the timer would kick in and resolve the deadlock.
Ugh. That's a _terrible_ idea.
Remember the old plugging code? You ever have to debug performance issues caused by it?
> > > I could be convinced, but right now I prefer my solution. > > It fixes bio allocation problem, but not other similar mempool problems in > dm and md.
I looked a bit more, and actually I think the rest of the problem is pretty limited in scope - most of those mempool allocations are per request, not per split.
I'm willing to put some time into converting dm/md over to bioset's front_pad. I'm having to learn the code for the immutable biovec work, anyways.
| |