]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
smb: server: make use of common smbdirect.h
authorStefan Metzmacher <metze@samba.org>
Wed, 6 Aug 2025 17:35:55 +0000 (19:35 +0200)
committerSteve French <stfrench@microsoft.com>
Sun, 28 Sep 2025 23:29:51 +0000 (18:29 -0500)
Cc: Steve French <smfrench@gmail.com>
Cc: Tom Talpey <tom@talpey.com>
Cc: Long Li <longli@microsoft.com>
Cc: Namjae Jeon <linkinjeon@kernel.org>
Cc: Hyunchul Lee <hyc.lee@gmail.com>
Cc: Meetakshi Setiya <meetakshisetiyaoss@gmail.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/connection.c
fs/smb/server/connection.h
fs/smb/server/smb2pdu.c
fs/smb/server/smb2pdu.h
fs/smb/server/transport_rdma.c

index 67c4f73398dfee038b40feffe92cd7b2121dd588..91a9344111348ad3f2995179d7d67fa12ad10499 100644 (file)
@@ -243,7 +243,7 @@ int ksmbd_conn_write(struct ksmbd_work *work)
 
 int ksmbd_conn_rdma_read(struct ksmbd_conn *conn,
                         void *buf, unsigned int buflen,
-                        struct smb2_buffer_desc_v1 *desc,
+                        struct smbdirect_buffer_descriptor_v1 *desc,
                         unsigned int desc_len)
 {
        int ret = -EINVAL;
@@ -257,7 +257,7 @@ int ksmbd_conn_rdma_read(struct ksmbd_conn *conn,
 
 int ksmbd_conn_rdma_write(struct ksmbd_conn *conn,
                          void *buf, unsigned int buflen,
-                         struct smb2_buffer_desc_v1 *desc,
+                         struct smbdirect_buffer_descriptor_v1 *desc,
                          unsigned int desc_len)
 {
        int ret = -EINVAL;
index 2aa8084bb59302aeeac9e5e10012410b872aab1c..07b43634262a194dbb4462dea73afd8623287bf6 100644 (file)
@@ -19,6 +19,8 @@
 #include "smb_common.h"
 #include "ksmbd_work.h"
 
+struct smbdirect_buffer_descriptor_v1;
+
 #define KSMBD_SOCKET_BACKLOG           16
 
 enum {
@@ -133,11 +135,11 @@ struct ksmbd_transport_ops {
                      unsigned int remote_key);
        int (*rdma_read)(struct ksmbd_transport *t,
                         void *buf, unsigned int len,
-                        struct smb2_buffer_desc_v1 *desc,
+                        struct smbdirect_buffer_descriptor_v1 *desc,
                         unsigned int desc_len);
        int (*rdma_write)(struct ksmbd_transport *t,
                          void *buf, unsigned int len,
-                         struct smb2_buffer_desc_v1 *desc,
+                         struct smbdirect_buffer_descriptor_v1 *desc,
                          unsigned int desc_len);
        void (*free_transport)(struct ksmbd_transport *kt);
 };
@@ -163,11 +165,11 @@ bool ksmbd_conn_lookup_dialect(struct ksmbd_conn *c);
 int ksmbd_conn_write(struct ksmbd_work *work);
 int ksmbd_conn_rdma_read(struct ksmbd_conn *conn,
                         void *buf, unsigned int buflen,
-                        struct smb2_buffer_desc_v1 *desc,
+                        struct smbdirect_buffer_descriptor_v1 *desc,
                         unsigned int desc_len);
 int ksmbd_conn_rdma_write(struct ksmbd_conn *conn,
                          void *buf, unsigned int buflen,
-                         struct smb2_buffer_desc_v1 *desc,
+                         struct smbdirect_buffer_descriptor_v1 *desc,
                          unsigned int desc_len);
 void ksmbd_conn_enqueue_request(struct ksmbd_work *work);
 void ksmbd_conn_try_dequeue_request(struct ksmbd_work *work);
index a565fc36cee6df04f6320404485143c1b840bf52..00e644935f28645bdcc38a9f418cd41361afc1bb 100644 (file)
@@ -23,6 +23,7 @@
 #include "asn1.h"
 #include "connection.h"
 #include "transport_ipc.h"
+#include "../common/smbdirect/smbdirect.h"
 #include "transport_rdma.h"
 #include "vfs.h"
 #include "vfs_cache.h"
@@ -6665,7 +6666,7 @@ out:
 }
 
 static int smb2_set_remote_key_for_rdma(struct ksmbd_work *work,
-                                       struct smb2_buffer_desc_v1 *desc,
+                                       struct smbdirect_buffer_descriptor_v1 *desc,
                                        __le32 Channel,
                                        __le16 ChannelInfoLength)
 {
@@ -6701,7 +6702,7 @@ static ssize_t smb2_read_rdma_channel(struct ksmbd_work *work,
        int err;
 
        err = ksmbd_conn_rdma_write(work->conn, data_buf, length,
-                                   (struct smb2_buffer_desc_v1 *)
+                                   (struct smbdirect_buffer_descriptor_v1 *)
                                    ((char *)req + le16_to_cpu(req->ReadChannelInfoOffset)),
                                    le16_to_cpu(req->ReadChannelInfoLength));
        if (err)
@@ -6772,7 +6773,7 @@ int smb2_read(struct ksmbd_work *work)
                        goto out;
                }
                err = smb2_set_remote_key_for_rdma(work,
-                                                  (struct smb2_buffer_desc_v1 *)
+                                                  (struct smbdirect_buffer_descriptor_v1 *)
                                                   ((char *)req + ch_offset),
                                                   req->Channel,
                                                   req->ReadChannelInfoLength);
@@ -6967,7 +6968,7 @@ static ssize_t smb2_write_rdma_channel(struct ksmbd_work *work,
                return -ENOMEM;
 
        ret = ksmbd_conn_rdma_read(work->conn, data_buf, length,
-                                  (struct smb2_buffer_desc_v1 *)
+                                  (struct smbdirect_buffer_descriptor_v1 *)
                                   ((char *)req + le16_to_cpu(req->WriteChannelInfoOffset)),
                                   le16_to_cpu(req->WriteChannelInfoLength));
        if (ret < 0) {
@@ -7032,7 +7033,7 @@ int smb2_write(struct ksmbd_work *work)
                        goto out;
                }
                err = smb2_set_remote_key_for_rdma(work,
-                                                  (struct smb2_buffer_desc_v1 *)
+                                                  (struct smbdirect_buffer_descriptor_v1 *)
                                                   ((char *)req + ch_offset),
                                                   req->Channel,
                                                   req->WriteChannelInfoLength);
index 16ae8a10490beb5bc5865ad3cf1f8a5e6af4f0c4..5163d5241b90d5661d415980c693ff06af6ee375 100644 (file)
@@ -136,12 +136,6 @@ struct create_posix_rsp {
        u8 SidBuffer[44];
 } __packed;
 
-struct smb2_buffer_desc_v1 {
-       __le64 offset;
-       __le32 token;
-       __le32 length;
-} __packed;
-
 #define SMB2_0_IOCTL_IS_FSCTL 0x00000001
 
 struct smb_sockaddr_in {
index 9401ba09310a15b0397fe9ecef26a1f188f38123..72ae3c9714a6b1e6e06ac0ec3845acd405cb6539 100644 (file)
@@ -23,6 +23,7 @@
 #include "connection.h"
 #include "smb_common.h"
 #include "../common/smb2status.h"
+#include "../common/smbdirect/smbdirect.h"
 #include "../common/smbdirect/smbdirect_pdu.h"
 #include "transport_rdma.h"
 
@@ -1402,7 +1403,7 @@ static void write_done(struct ib_cq *cq, struct ib_wc *wc)
 
 static int smb_direct_rdma_xmit(struct smb_direct_transport *t,
                                void *buf, int buf_len,
-                               struct smb2_buffer_desc_v1 *desc,
+                               struct smbdirect_buffer_descriptor_v1 *desc,
                                unsigned int desc_len,
                                bool is_read)
 {
@@ -1532,7 +1533,7 @@ out:
 
 static int smb_direct_rdma_write(struct ksmbd_transport *t,
                                 void *buf, unsigned int buflen,
-                                struct smb2_buffer_desc_v1 *desc,
+                                struct smbdirect_buffer_descriptor_v1 *desc,
                                 unsigned int desc_len)
 {
        return smb_direct_rdma_xmit(smb_trans_direct_transfort(t), buf, buflen,
@@ -1541,7 +1542,7 @@ static int smb_direct_rdma_write(struct ksmbd_transport *t,
 
 static int smb_direct_rdma_read(struct ksmbd_transport *t,
                                void *buf, unsigned int buflen,
-                               struct smb2_buffer_desc_v1 *desc,
+                               struct smbdirect_buffer_descriptor_v1 *desc,
                                unsigned int desc_len)
 {
        return smb_direct_rdma_xmit(smb_trans_direct_transfort(t), buf, buflen,