diff options
Diffstat (limited to 'drivers/md/dm.c')
-rw-r--r-- | drivers/md/dm.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/drivers/md/dm.c b/drivers/md/dm.c index dd953b189f45..9f9aa64f7336 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c | |||
@@ -977,8 +977,6 @@ static int dm_any_congested(void *congested_data, int bdi_bits) | |||
977 | struct mapped_device *md = congested_data; | 977 | struct mapped_device *md = congested_data; |
978 | struct dm_table *map; | 978 | struct dm_table *map; |
979 | 979 | ||
980 | atomic_inc(&md->pending); | ||
981 | |||
982 | if (!test_bit(DMF_BLOCK_IO, &md->flags)) { | 980 | if (!test_bit(DMF_BLOCK_IO, &md->flags)) { |
983 | map = dm_get_table(md); | 981 | map = dm_get_table(md); |
984 | if (map) { | 982 | if (map) { |
@@ -987,10 +985,6 @@ static int dm_any_congested(void *congested_data, int bdi_bits) | |||
987 | } | 985 | } |
988 | } | 986 | } |
989 | 987 | ||
990 | if (!atomic_dec_return(&md->pending)) | ||
991 | /* nudge anyone waiting on suspend queue */ | ||
992 | wake_up(&md->wait); | ||
993 | |||
994 | return r; | 988 | return r; |
995 | } | 989 | } |
996 | 990 | ||
@@ -1250,10 +1244,12 @@ static int __bind(struct mapped_device *md, struct dm_table *t) | |||
1250 | 1244 | ||
1251 | if (md->suspended_bdev) | 1245 | if (md->suspended_bdev) |
1252 | __set_size(md, size); | 1246 | __set_size(md, size); |
1253 | if (size == 0) | 1247 | |
1248 | if (!size) { | ||
1249 | dm_table_destroy(t); | ||
1254 | return 0; | 1250 | return 0; |
1251 | } | ||
1255 | 1252 | ||
1256 | dm_table_get(t); | ||
1257 | dm_table_event_callback(t, event_callback, md); | 1253 | dm_table_event_callback(t, event_callback, md); |
1258 | 1254 | ||
1259 | write_lock(&md->map_lock); | 1255 | write_lock(&md->map_lock); |
@@ -1275,7 +1271,7 @@ static void __unbind(struct mapped_device *md) | |||
1275 | write_lock(&md->map_lock); | 1271 | write_lock(&md->map_lock); |
1276 | md->map = NULL; | 1272 | md->map = NULL; |
1277 | write_unlock(&md->map_lock); | 1273 | write_unlock(&md->map_lock); |
1278 | dm_table_put(map); | 1274 | dm_table_destroy(map); |
1279 | } | 1275 | } |
1280 | 1276 | ||
1281 | /* | 1277 | /* |