On 2010-10-22 10:07, Wu Fengguang wrote: >>> We surely need 1 set aside for each level of that stack that will >>> potentially consume one. 1 should be enough for the generic pool, and >>> then clones will use a separate pool. So md and friends should really >>> have a pool per device, so that stacking will always work properly. >> >> Agreed for the deadlock problem. >> >>> There should be no throughput concerns, it should purely be a safe guard >>> measure to prevent us deadlocking when doing IO for reclaim. >> >> It's easy to verify whether the minimal size will have negative >> impacts on IO throughput. In Torsten's case, increase BIO_POOL_SIZE >> by one and check how it performs. > > Sorry it seems simply increasing BIO_POOL_SIZE is not enough to fix > possible deadlocks. We need adding new mempool(s). Because when there > BIO_POOL_SIZE=2 and there are two concurrent reclaimers each take 1 > reservation, they will deadlock each other when trying to take the > next bio at the raid1 level. Yes, plus it's not a practical solution since you don't know how deep the stack is. As I wrote in the initial email, each consumer needs it's own private mempool (and just 1 entry should suffice). -- Jens Axboe -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>