Commit d221d2e7 authored by Mikulas Patocka's avatar Mikulas Patocka Committed by Alasdair G Kergon

dm: move pending queue wake_up end_io_acct

This doesn't fix any bug, just moves wake_up immediately after decrementing
md->pending, for better code readability.

It must be clear to anyone manipulating md->pending to wake up
the queue if md->pending reaches zero, so move the wakeup as close to
the decrementing as possible.
Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
parent 14e98c5c
...@@ -375,7 +375,7 @@ static void start_io_acct(struct dm_io *io) ...@@ -375,7 +375,7 @@ static void start_io_acct(struct dm_io *io)
dm_disk(md)->part0.in_flight = atomic_inc_return(&md->pending); dm_disk(md)->part0.in_flight = atomic_inc_return(&md->pending);
} }
static int end_io_acct(struct dm_io *io) static void end_io_acct(struct dm_io *io)
{ {
struct mapped_device *md = io->md; struct mapped_device *md = io->md;
struct bio *bio = io->bio; struct bio *bio = io->bio;
...@@ -391,7 +391,9 @@ static int end_io_acct(struct dm_io *io) ...@@ -391,7 +391,9 @@ static int end_io_acct(struct dm_io *io)
dm_disk(md)->part0.in_flight = pending = dm_disk(md)->part0.in_flight = pending =
atomic_dec_return(&md->pending); atomic_dec_return(&md->pending);
return !pending; /* nudge anyone waiting on suspend queue */
if (!pending)
wake_up(&md->wait);
} }
/* /*
...@@ -499,9 +501,7 @@ static void dec_pending(struct dm_io *io, int error) ...@@ -499,9 +501,7 @@ static void dec_pending(struct dm_io *io, int error)
spin_unlock_irqrestore(&io->md->pushback_lock, flags); spin_unlock_irqrestore(&io->md->pushback_lock, flags);
} }
if (end_io_acct(io)) end_io_acct(io);
/* nudge anyone waiting on suspend queue */
wake_up(&io->md->wait);
if (io->error != DM_ENDIO_REQUEUE) { if (io->error != DM_ENDIO_REQUEUE) {
blk_add_trace_bio(io->md->queue, io->bio, blk_add_trace_bio(io->md->queue, io->bio,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment