[PATCH 3/5] dm vdo wait-queue: optimize vdo_waitq_dequeue_matching_waiters

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Mike Snitzer <snitzer@xxxxxxxxxx>

Remove temporary 'matched_waiters' waitq and just enqueue matched
waiters directly to the caller provided 'matched_waitq'.

Reviewed-by: Ken Raeburn <raeburn@xxxxxxxxxx>
Signed-off-by: Mike Snitzer <snitzer@xxxxxxxxxx>
Signed-off-by: Matthew Sakai <msakai@xxxxxxxxxx>
---
 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





[Index of Archives]     [DM Crypt]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Packaging]     [Fedora SELinux]     [Yosemite Discussion]     [KDE Users]     [Fedora Docs]

  Powered by Linux