[dm-crypt] dm-crypt parallelization patches
vgoyal at redhat.com
Tue Apr 9 23:07:35 CEST 2013
On Tue, Apr 09, 2013 at 04:32:28PM -0400, Mikulas Patocka wrote:
> Generally, we shouldn't associate bios with "current" task in device
> mapper targets. For example suppose that we have two stacked dm-crypt
> In the "current" process pointer in lower dm-crypt target's request
> function always points to the workqueue of the upper dm-crypt target that
> submits the bios. So if we associate the bio with "current" in the lower
> target, we are associating it with a preallocated workqueue and we already
> lost the information who submitted it.
> You should associate a bio with a task when you create the bio and "md"
> and "dm" midlayers should just forward this association to lower layer
bio_associate_current() return -EBUSY if bio has already been associated
with an io context.
So in a stack if every driver calls bio_associate_current(), upon bio
submission, it will automatically amke sure bio gets associated with
submitter task in top level device and calls by lower level device
will be ignored.
Lower level devices I think just need to make sure this context
info is propogated to cloned bios.
> +#ifdef CONFIG_BLK_CGROUP
> + tio->clone.bi_ioc = ci->bio->bi_ioc;
> + tio->clone.bi_css = ci->bio->bi_css;
You also need to take references to ioc and css objects. I guess a helper
function will be better. May be something like.
And this initialize bio2's context with bio1's context.
More information about the dm-crypt