Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -375,7 +375,7 @@ static void start_io_acct(struct dm_io *io)
	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 bio *bio = io->bio;
@@ -391,7 +391,9 @@ static int end_io_acct(struct dm_io *io)
	dm_disk(md)->part0.in_flight = 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)
			spin_unlock_irqrestore(&io->md->pushback_lock, flags);
		}

		if (end_io_acct(io))
			/* nudge anyone waiting on suspend queue */
			wake_up(&io->md->wait);
		end_io_acct(io);

		if (io->error != DM_ENDIO_REQUEUE) {
			blk_add_trace_bio(io->md->queue, io->bio,