From 7d211c1015eecae3e0beeae120d97ac020ce0cb1 Mon Sep 17 00:00:00 2001 From: Mikulas Patocka Date: Thu, 2 Apr 2009 19:55:38 +0100 Subject: [PATCH] --- yaml --- r: 140182 b: refs/heads/master c: ef2085870ea448b3c19160d899cf4f948da6a384 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/md/dm.c | 18 +++++++----------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/[refs] b/[refs] index d7ebdcf84755..64ec1629cd55 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f0b9a4502baa18f8a255a2866bb4e0655fb35974 +refs/heads/master: ef2085870ea448b3c19160d899cf4f948da6a384 diff --git a/trunk/drivers/md/dm.c b/trunk/drivers/md/dm.c index 385c2e8f90c8..4ba0811f28c5 100644 --- a/trunk/drivers/md/dm.c +++ b/trunk/drivers/md/dm.c @@ -1401,14 +1401,20 @@ static int dm_wait_for_completion(struct mapped_device *md) /* * Process the deferred bios */ -static void __flush_deferred_io(struct mapped_device *md) +static void dm_wq_work(struct work_struct *work) { + struct mapped_device *md = container_of(work, struct mapped_device, + work); struct bio *c; + down_write(&md->io_lock); + while ((c = bio_list_pop(&md->deferred))) __split_and_process_bio(md, c); clear_bit(DMF_BLOCK_IO, &md->flags); + + up_write(&md->io_lock); } static void __merge_pushback_list(struct mapped_device *md) @@ -1422,16 +1428,6 @@ static void __merge_pushback_list(struct mapped_device *md) spin_unlock_irqrestore(&md->pushback_lock, flags); } -static void dm_wq_work(struct work_struct *work) -{ - struct mapped_device *md = container_of(work, struct mapped_device, - work); - - down_write(&md->io_lock); - __flush_deferred_io(md); - up_write(&md->io_lock); -} - static void dm_queue_flush(struct mapped_device *md) { queue_work(md->wq, &md->work);