• Tejun Heo's avatar
    dm-crypt: Convert from tasklet to BH workqueue · fb6ad4ae
    Tejun Heo authored
    The only generic interface to execute asynchronously in the BH context is
    tasklet; however, it's marked deprecated and has some design flaws. To
    replace tasklets, BH workqueue support was recently added. A BH workqueue
    behaves similarly to regular workqueues except that the queued work items
    are executed in the BH context.
    
    This commit converts dm-crypt from tasklet to BH workqueue.  It
    backfills tasklet code that was removed with commit 0a9bab39
    ("dm-crypt, dm-verity: disable tasklets") and tweaks to use BH
    workqueue.
    
    Like a regular workqueue, a BH workqueue allows freeing the currently
    executing work item. Converting from tasklet to BH workqueue removes the
    need for deferring bio_endio() again to a work item, which was buggy anyway.
    
    I tested this lightly with "--perf-no_read_workqueue
    --perf-no_write_workqueue" + some code modifications, but would really
    -appreciate if someone who knows the code base better could take a look.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Link: http://lkml.kernel.org/r/82b964f0-c2c8-a2c6-5b1f-f3145dc2c8e5@redhat.com
    [snitzer: rebase ontop of commit 0a9bab39 reduced this commit's changes]
    Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
    fb6ad4ae
dm-crypt.c 96.5 KB