dm thin: fix noflush suspend IO queueing
authorJoe Thornber <ejt@redhat.com>
Mon, 3 Mar 2014 15:52:28 +0000 (15:52 +0000)
committerMike Snitzer <snitzer@redhat.com>
Wed, 5 Mar 2014 20:26:59 +0000 (15:26 -0500)
commit738211f70a1d0c7ff7dc965395f7b8a436365ebd
treec18a2183962a4498ef247c01dac98c54f5c95108
parent18adc57779866ba451237dccca2ebf019be2fa20
dm thin: fix noflush suspend IO queueing

i) by the time DM core calls the postsuspend hook the dm_noflush flag
has been cleared.  So the old thin_postsuspend did nothing.  We need to
use the presuspend hook instead.

ii) There was a race between bios leaving DM core and arriving in the
deferred queue.

thin_presuspend now sets a 'requeue' flag causing all bios destined for
that thin to be requeued back to DM core.  Then it requeues all held IO,
and all IO on the deferred queue (destined for that thin).  Finally
postsuspend clears the 'requeue' flag.

Signed-off-by: Joe Thornber <ejt@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-thin.c