aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/md/dm.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/drivers/md/dm.c b/drivers/md/dm.c
index ab3b5d84df65..020a9e1993a7 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -1437,18 +1437,19 @@ static void dm_wq_work(struct work_struct *work)
1437 1437
1438 down_write(&md->io_lock); 1438 down_write(&md->io_lock);
1439 1439
1440next_bio: 1440 while (1) {
1441 spin_lock_irq(&md->deferred_lock); 1441 spin_lock_irq(&md->deferred_lock);
1442 c = bio_list_pop(&md->deferred); 1442 c = bio_list_pop(&md->deferred);
1443 spin_unlock_irq(&md->deferred_lock); 1443 spin_unlock_irq(&md->deferred_lock);
1444
1445 if (!c) {
1446 clear_bit(DMF_BLOCK_IO, &md->flags);
1447 break;
1448 }
1444 1449
1445 if (c) {
1446 __split_and_process_bio(md, c); 1450 __split_and_process_bio(md, c);
1447 goto next_bio;
1448 } 1451 }
1449 1452
1450 clear_bit(DMF_BLOCK_IO, &md->flags);
1451
1452 up_write(&md->io_lock); 1453 up_write(&md->io_lock);
1453} 1454}
1454 1455