[prev in list] [next in list] [prev in thread] [next in thread]
List: dm-devel
Subject: [PATCH 3/5] dm vdo wait-queue: optimize vdo_waitq_dequeue_matching_waiters
From: Matthew Sakai <msakai () redhat ! com>
Date: 2023-11-20 22:29:18
Message-ID: 0253e36543d5030cab7b5ead05850f085692a329.1700516271.git.msakai () redhat ! com
[Download RAW message or body]
From: Mike Snitzer <snitzer@kernel.org>
Remove temporary 'matched_waiters' waitq and just enqueue matched
waiters directly to the caller provided 'matched_waitq'.
Reviewed-by: Ken Raeburn <raeburn@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@kernel.org>
Signed-off-by: Matthew Sakai <msakai@redhat.com>
---
drivers/md/dm-vdo/wait-queue.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/drivers/md/dm-vdo/wait-queue.c b/drivers/md/dm-vdo/wait-queue.c
index 4231d3243fa1..7e4cf9f03249 100644
--- a/drivers/md/dm-vdo/wait-queue.c
+++ b/drivers/md/dm-vdo/wait-queue.c
@@ -129,10 +129,8 @@ void vdo_waitq_dequeue_matching_waiters(struct vdo_wait_queue *waitq,
void *match_context,
struct vdo_wait_queue *matched_waitq)
{
- // FIXME: copying a waitq just to iterate it, with matching, is unfortunate
- struct vdo_wait_queue matched_waiters, iteration_waitq;
+ struct vdo_wait_queue iteration_waitq;
- vdo_waitq_init(&matched_waiters);
vdo_waitq_init(&iteration_waitq);
vdo_waitq_transfer_all_waiters(waitq, &iteration_waitq);
@@ -140,10 +138,8 @@ void vdo_waitq_dequeue_matching_waiters(struct vdo_wait_queue *waitq,
struct vdo_waiter *waiter = vdo_waitq_dequeue_next_waiter(&iteration_waitq);
vdo_waitq_enqueue_waiter((waiter_match(waiter, match_context) ?
- &matched_waiters : waitq), waiter);
+ matched_waitq : waitq), waiter);
}
-
- vdo_waitq_transfer_all_waiters(&matched_waiters, matched_waitq);
}
/**
--
2.42.0
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic