]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
smb: server: initialize recv_io->cqe.done = recv_done just once
authorStefan Metzmacher <metze@samba.org>
Tue, 2 Dec 2025 21:15:25 +0000 (22:15 +0100)
committerSteve French <stfrench@microsoft.com>
Mon, 15 Dec 2025 00:35:55 +0000 (18:35 -0600)
smbdirect_recv_io structures are pre-allocated so we can set the
callback function just once.

This will make it easy to move smb_direct_post_recv to common code
soon.

Cc: Tom Talpey <tom@talpey.com>
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/server/transport_rdma.c

index 4e7ab8d9314f61d7cd888df69e88c69b3e884cb1..222d1b5365e837fe2bea13c6647aec38e5f36019 100644 (file)
@@ -758,7 +758,6 @@ static int smb_direct_post_recv(struct smbdirect_socket *sc,
                return ret;
        recvmsg->sge.length = sp->max_recv_size;
        recvmsg->sge.lkey = sc->ib.pd->local_dma_lkey;
-       recvmsg->cqe.done = recv_done;
 
        wr.wr_cqe = &recvmsg->cqe;
        wr.next = NULL;
@@ -2339,6 +2338,7 @@ respond:
 
 static int smb_direct_connect(struct smbdirect_socket *sc)
 {
+       struct smbdirect_recv_io *recv_io;
        int ret;
 
        ret = smb_direct_init_params(sc);
@@ -2353,6 +2353,9 @@ static int smb_direct_connect(struct smbdirect_socket *sc)
                return ret;
        }
 
+       list_for_each_entry(recv_io, &sc->recv_io.free.list, list)
+               recv_io->cqe.done = recv_done;
+
        ret = smb_direct_create_qpair(sc);
        if (ret) {
                pr_err("Can't accept RDMA client: %d\n", ret);