diff options
| -rw-r--r-- | drivers/md/dm.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/md/dm.c b/drivers/md/dm.c index 16a806a99b99..866ff19aa438 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c | |||
| @@ -2341,7 +2341,8 @@ static struct dm_table *__bind(struct mapped_device *md, struct dm_table *t, | |||
| 2341 | set_bit(DMF_MERGE_IS_OPTIONAL, &md->flags); | 2341 | set_bit(DMF_MERGE_IS_OPTIONAL, &md->flags); |
| 2342 | else | 2342 | else |
| 2343 | clear_bit(DMF_MERGE_IS_OPTIONAL, &md->flags); | 2343 | clear_bit(DMF_MERGE_IS_OPTIONAL, &md->flags); |
| 2344 | dm_sync_table(md); | 2344 | if (old_map) |
| 2345 | dm_sync_table(md); | ||
| 2345 | 2346 | ||
| 2346 | return old_map; | 2347 | return old_map; |
| 2347 | } | 2348 | } |
| @@ -2782,7 +2783,8 @@ int dm_suspend(struct mapped_device *md, unsigned suspend_flags) | |||
| 2782 | * flush_workqueue(md->wq). | 2783 | * flush_workqueue(md->wq). |
| 2783 | */ | 2784 | */ |
| 2784 | set_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags); | 2785 | set_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags); |
| 2785 | synchronize_srcu(&md->io_barrier); | 2786 | if (map) |
| 2787 | synchronize_srcu(&md->io_barrier); | ||
| 2786 | 2788 | ||
| 2787 | /* | 2789 | /* |
| 2788 | * Stop md->queue before flushing md->wq in case request-based | 2790 | * Stop md->queue before flushing md->wq in case request-based |
| @@ -2802,7 +2804,8 @@ int dm_suspend(struct mapped_device *md, unsigned suspend_flags) | |||
| 2802 | 2804 | ||
| 2803 | if (noflush) | 2805 | if (noflush) |
| 2804 | clear_bit(DMF_NOFLUSH_SUSPENDING, &md->flags); | 2806 | clear_bit(DMF_NOFLUSH_SUSPENDING, &md->flags); |
| 2805 | synchronize_srcu(&md->io_barrier); | 2807 | if (map) |
| 2808 | synchronize_srcu(&md->io_barrier); | ||
| 2806 | 2809 | ||
| 2807 | /* were we interrupted ? */ | 2810 | /* were we interrupted ? */ |
| 2808 | if (r < 0) { | 2811 | if (r < 0) { |
