From: Yuto Ohnuki Date: Mon, 23 Feb 2026 14:03:33 +0000 (+0000) Subject: fuse: refactor duplicate queue teardown operation X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9587fde0da0365d300ea1c967e63ad3fe09b883e;p=thirdparty%2Flinux.git fuse: refactor duplicate queue teardown operation Extract common queue iteration and teardown logic into fuse_uring_teardown_all_queues() helper function to eliminate code duplication between fuse_uring_async_stop_queues() and fuse_uring_stop_queues(). This is a pure refactoring with no functional changes, intended to improve maintainability. Signed-off-by: Yuto Ohnuki Reviewed-by: Bernd Schubert Signed-off-by: Miklos Szeredi --- diff --git a/fs/fuse/dev_uring.c b/fs/fuse/dev_uring.c index 3a38b61aac26f..7b9822e8837bc 100644 --- a/fs/fuse/dev_uring.c +++ b/fs/fuse/dev_uring.c @@ -397,6 +397,20 @@ static void fuse_uring_teardown_entries(struct fuse_ring_queue *queue) FRRS_AVAILABLE); } +static void fuse_uring_teardown_all_queues(struct fuse_ring *ring) +{ + int qid; + + for (qid = 0; qid < ring->nr_queues; qid++) { + struct fuse_ring_queue *queue = READ_ONCE(ring->queues[qid]); + + if (!queue) + continue; + + fuse_uring_teardown_entries(queue); + } +} + /* * Log state debug info */ @@ -431,19 +445,10 @@ static void fuse_uring_log_ent_state(struct fuse_ring *ring) static void fuse_uring_async_stop_queues(struct work_struct *work) { - int qid; struct fuse_ring *ring = container_of(work, struct fuse_ring, async_teardown_work.work); - /* XXX code dup */ - for (qid = 0; qid < ring->nr_queues; qid++) { - struct fuse_ring_queue *queue = READ_ONCE(ring->queues[qid]); - - if (!queue) - continue; - - fuse_uring_teardown_entries(queue); - } + fuse_uring_teardown_all_queues(ring); /* * Some ring entries might be in the middle of IO operations, @@ -469,16 +474,7 @@ static void fuse_uring_async_stop_queues(struct work_struct *work) */ void fuse_uring_stop_queues(struct fuse_ring *ring) { - int qid; - - for (qid = 0; qid < ring->nr_queues; qid++) { - struct fuse_ring_queue *queue = READ_ONCE(ring->queues[qid]); - - if (!queue) - continue; - - fuse_uring_teardown_entries(queue); - } + fuse_uring_teardown_all_queues(ring); if (atomic_read(&ring->queue_refs) > 0) { ring->teardown_time = jiffies;