Refactor dm_wq_work() to make later patch more readable.
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
down_write(&md->io_lock);
-next_bio:
- spin_lock_irq(&md->deferred_lock);
- c = bio_list_pop(&md->deferred);
- spin_unlock_irq(&md->deferred_lock);
+ while (1) {
+ spin_lock_irq(&md->deferred_lock);
+ c = bio_list_pop(&md->deferred);
+ spin_unlock_irq(&md->deferred_lock);
+
+ if (!c) {
+ clear_bit(DMF_BLOCK_IO, &md->flags);
+ break;
+ }
- if (c) {
__split_and_process_bio(md, c);
- goto next_bio;
}
- clear_bit(DMF_BLOCK_IO, &md->flags);
-
up_write(&md->io_lock);
}