diff options
author | Mike Snitzer | 2014-10-28 20:13:31 -0400 |
---|---|---|
committer | Mike Snitzer | 2014-11-19 11:24:59 -0500 |
commit | d67ee213fa5700c7da526fe5bcccd485cfa63d8b (patch) | |
tree | 9ba735535bac6b904191702006275ec8115d9803 /drivers/md/dm.c | |
parent | 4d341d8216336174d35cd2575b6b9e4267a88ac8 (diff) |
dm: add presuspend_undo hook to target_type
The DM thin-pool target now must undo the changes performed during
pool_presuspend() so introduce presuspend_undo hook in target_type.
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Acked-by: Joe Thornber <ejt@redhat.com>
Diffstat (limited to 'drivers/md/dm.c')
-rw-r--r-- | drivers/md/dm.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/md/dm.c b/drivers/md/dm.c index f8cdd97c28a7..f84de3215982 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c @@ -2756,7 +2756,10 @@ int dm_suspend(struct mapped_device *md, unsigned suspend_flags) if (noflush) set_bit(DMF_NOFLUSH_SUSPENDING, &md->flags); - /* This does not get reverted if there's an error later. */ + /* + * This gets reverted if there's an error later and the targets + * provide the .presuspend_undo hook. + */ dm_table_presuspend_targets(map); /* @@ -2767,8 +2770,10 @@ int dm_suspend(struct mapped_device *md, unsigned suspend_flags) */ if (!noflush && do_lockfs) { r = lock_fs(md); - if (r) + if (r) { + dm_table_presuspend_undo_targets(map); goto out_unlock; + } } /* @@ -2816,6 +2821,7 @@ int dm_suspend(struct mapped_device *md, unsigned suspend_flags) start_queue(md->queue); unlock_fs(md); + dm_table_presuspend_undo_targets(map); goto out_unlock; /* pushback list is already flushed, so skip flush */ } |