[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: [dm-devel] [PATCH v7 9/9] block: Avoid deadlocks with bio allocation by stacking drivers
- From: Tejun Heo <tj kernel org>
- To: Dave Chinner <david fromorbit com>
- Cc: Jens Axboe <axboe kernel dk>, Kent Overstreet <koverstreet google com>, linux-bcache vger kernel org, linux-kernel vger kernel org, dm-devel redhat com, Mikulas Patocka <mpatocka redhat com>, bharrosh panasas com, Vivek Goyal <vgoyal redhat com>
- Subject: Re: [dm-devel] [PATCH v7 9/9] block: Avoid deadlocks with bio allocation by stacking drivers
- Date: Tue, 4 Sep 2012 21:37:37 -0700
Hello, Dave.
On Wed, Sep 05, 2012 at 01:57:59PM +1000, Dave Chinner wrote:
> > But, yeah, this can't be solved by enlarging the stack size. The
> > upper limit is unbound.
>
> Sure, but recursion issue is isolated to the block layer.
>
> If we can still submit IO directly through the block layer without
> pushing it off to a work queue, then the overall stack usage problem
> still exists. But if the block layer always pushes the IO off into
> another workqueue to avoid stack overflows, then the context
> switches are going to cause significant performance regressions for
> high IOPS workloads. I don't really like either situation.
Kent's proposed solution doesn't do that. The rescuer work item is
used iff mempool allocation fails w/o GFP_WAIT. IOW, we're already
under severe memory pressure and stalls are expected all around the
kernel (somehow this sounds festive...) It doesn't alter the
breadth-first walk of bio decomposition and shouldn't degrade
performance in any noticeable way.
> So while you are discussing stack issues, think a little about the
> bigger picture outside of the immediate issue at hand - a better
> solution for everyone might pop up....
It's probably because I haven't been bitten much from stack overflow
but I'd like to keep thinking that stack overflows are extremely
unusual and the ones causing them are the bad ones. Thank you very
much. :p
--
tejun
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]