]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
fuse: refactor duplicate queue teardown operation
authorYuto Ohnuki <ytohnuki@amazon.com>
Mon, 23 Feb 2026 14:03:33 +0000 (14:03 +0000)
committerMiklos Szeredi <mszeredi@redhat.com>
Fri, 27 Feb 2026 14:16:34 +0000 (15:16 +0100)
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 <ytohnuki@amazon.com>
Reviewed-by: Bernd Schubert <bernd@bsbernd.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
fs/fuse/dev_uring.c

index 3a38b61aac26f7387cdcb7b2d81624e1ac9ececa..7b9822e8837bce8c96ef6b3f0fe6990656fc5787 100644 (file)
@@ -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;