io_uring: deduplicate io_queue_sqe() call sites
authorPavel Begunkov <asml.silence@gmail.com>
Fri, 24 Sep 2021 20:59:56 +0000 (21:59 +0100)
committerJens Axboe <axboe@kernel.dk>
Tue, 19 Oct 2021 11:49:53 +0000 (05:49 -0600)
There are two call sites of io_queue_sqe() in io_submit_sqe(), combine
them into one, because io_queue_sqe() is inline and we don't want to
bloat binary, and will become even bigger

   text    data     bss     dec     hex filename
  92126   13986       8  106120   19e88 ./fs/io_uring.o
  91966   13986       8  105960   19de8 ./fs/io_uring.o

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/506124b8e767f0a4576f7a459f6aea3d13fb4dda.1632516769.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c

index 5088b47..9b99ec4 100644 (file)
@@ -7117,20 +7117,18 @@ fail_req:
                link->last->link = req;
                link->last = req;
 
+               if (req->flags & (REQ_F_LINK | REQ_F_HARDLINK))
+                       return 0;
                /* last request of a link, enqueue the link */
-               if (!(req->flags & (REQ_F_LINK | REQ_F_HARDLINK))) {
-                       link->head = NULL;
-                       io_queue_sqe(head);
-               }
-       } else {
-               if (req->flags & (REQ_F_LINK | REQ_F_HARDLINK)) {
-                       link->head = req;
-                       link->last = req;
-               } else {
-                       io_queue_sqe(req);
-               }
+               link->head = NULL;
+               req = head;
+       } else if (req->flags & (REQ_F_LINK | REQ_F_HARDLINK)) {
+               link->head = req;
+               link->last = req;
+               return 0;
        }
 
+       io_queue_sqe(req);
        return 0;
 }