diff options
author | Kiyoshi Ueda <k-ueda@ct.jp.nec.com> | 2009-12-11 00:52:13 +0100 |
---|---|---|
committer | Alasdair G Kergon <agk@redhat.com> | 2009-12-11 00:52:13 +0100 |
commit | 90abb8c4cec8f0aa4ce58790542e3cf13071601a (patch) | |
tree | 4233757994b2ff97c29c81d5aae9f4660dcea1b3 | |
parent | dm kcopyd: accept zero size jobs (diff) | |
download | linux-90abb8c4cec8f0aa4ce58790542e3cf13071601a.tar.xz linux-90abb8c4cec8f0aa4ce58790542e3cf13071601a.zip |
dm: abstract dm_in_flight function
This patch adds md_in_flight() to get the number of in_flight I/Os.
No functional change.
This patch is a preparation for a later patch in this series, which
changes I/O counter to md->pending from q->in_flight in request-based dm.
Signed-off-by: Kiyoshi Ueda <k-ueda@ct.jp.nec.com>
Signed-off-by: Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
-rw-r--r-- | drivers/md/dm.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/md/dm.c b/drivers/md/dm.c index 473f0c3c0192..73b89afd6565 100644 --- a/drivers/md/dm.c +++ b/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 && |