Messages in this thread |  | | | From | Daniel Phillips <> | | Subject | Re: [ANNOUNCE] ddtree: A git kernel tree for storage servers | | Date | Wed, 19 Mar 2008 15:33:19 -0800 |
| |
On Wednesday 19 March 2008 13:23, Mike Snitzer wrote: > > * Block layer deadlock fixes (Status: production) > > Do you happen to have a pointer to where these block layer deadlock > fixes are? Or will you be committing them shortly?
Hi Mike,
OK, this is committed now, but caveat: improved, untested except for booting. But what could possibly go wrong? :-/
http://phunq.net/ddtree?p=ddtree/.git;a=blob;f=patches/bio-throttle
The production version is sitting in the code.google.com svn repository in ddsnap/patches/2.6.23.8. That one has a known bug that has somehow escaped being stomped with a new commit, since it only manifests if you stack one stacking block device on top of another one. I will post here when we have an official, torture tested version of the patch.
The patch above is improved from the most recently posted version by using using the ->bi_max_vecs field for throttle accounting instead of calling out to a per-driver metric. This works nicely because the max_vecs field cannot change during the life of the bio, and it gives a decent upper bound on the resource consumption of the bio, better than simply counting bios in flight. The queue->metric() method is still in there as a stub, some more cleanup to do there (and further shrinking of the patch). It does no harm.
This improvement shrinks the throttled version of struct bio by 4 bytes.
Regards,
Daniel
|  |