From 7c001c5212288a26edbda678387e9f55f546188b Mon Sep 17 00:00:00 2001 From: Kiyoshi Ueda Date: Thu, 10 Dec 2009 23:52:13 +0000 Subject: [PATCH] --- yaml --- r: 176542 b: refs/heads/master c: 90abb8c4cec8f0aa4ce58790542e3cf13071601a h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/md/dm.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 99010f287518..80fbe2449676 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9ca170a3c0cbb0d5251cef6f5a3300fa436ba8ec +refs/heads/master: 90abb8c4cec8f0aa4ce58790542e3cf13071601a diff --git a/trunk/drivers/md/dm.c b/trunk/drivers/md/dm.c index 473f0c3c0192..73b89afd6565 100644 --- a/trunk/drivers/md/dm.c +++ b/trunk/drivers/md/dm.c @@ -452,6 +452,12 @@ static void free_bio_info(struct dm_rq_clone_bio_info *info) mempool_free(info, info->tio->md->io_pool); } +static int md_in_flight(struct mapped_device *md) +{ + return atomic_read(&md->pending[READ]) + + atomic_read(&md->pending[WRITE]); +} + static void start_io_acct(struct dm_io *io) { struct mapped_device *md = io->md; @@ -2100,8 +2106,7 @@ static int dm_wait_for_completion(struct mapped_device *md, int interruptible) break; } spin_unlock_irqrestore(q->queue_lock, flags); - } else if (!atomic_read(&md->pending[0]) && - !atomic_read(&md->pending[1])) + } else if (!md_in_flight(md)) break; if (interruptible == TASK_INTERRUPTIBLE &&