Re: dm: free io_barrier after blk_cleanup_queue call
From: Mike Snitzer
Date: Mon Oct 10 2016 - 09:25:50 EST
On Mon, Oct 10 2016 at 8:35am -0400,
Tahsin Erdogan <tahsin@xxxxxxxxxx> wrote:
> dm_old_request_fn() has paths that access md->io_barrier. The party
> destroying io_barrier should ensure that no future execution
> of dm_old_request_fn() is possible. Move destruction to below
> blk_cleanup_queue() to ensure this.
I have to believe this was born out of code inspection rather than
actual need (due to crash, etc)?
The cleanup order isn't relevant. The reference counting of a DM device
governs whether a DM device (and its associated 'struct mapped_device')
can be destroyed. Please have a look at __dm_destroy, particularly:
* No one should increment the reference count of the mapped_device,
* after the mapped_device state becomes DMF_FREEING.