From: chenxiaosong.chenxiaosong@linux.dev
To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org,
linkinjeon@samba.org, christophe.jaillet@wanadoo.fr
Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org,
ZhangGuoDong <zhangguodong@kylinos.cn>,
ChenXiaoSong <chenxiaosong@kylinos.cn>
Subject: [PATCH v4 22/24] smb: move copychunk definitions to common/smb2pdu.h
Date: Mon, 27 Oct 2025 15:22:04 +0800 [thread overview]
Message-ID: <20251027072206.3468578-8-chenxiaosong.chenxiaosong@linux.dev> (raw)
In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev>
From: ZhangGuoDong <zhangguodong@kylinos.cn>
Rename 3 places:
- copychunk_ioctl -> copychunk_ioctl_req
- copychunk -> srv_copychunk
- server: ResumeKey -> SourceKeyU64
Merge the struct members of the server and the client, then move duplicate
definitions to common header file.
Co-developed-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
Signed-off-by: ZhangGuoDong <zhangguodong@kylinos.cn>
---
fs/smb/client/cifspdu.h | 8 --------
fs/smb/client/smb2ops.c | 6 +++---
fs/smb/client/smb2pdu.h | 24 ------------------------
fs/smb/common/smb2pdu.h | 29 +++++++++++++++++++++++++++++
fs/smb/server/smb2pdu.c | 4 ++--
fs/smb/server/smb2pdu.h | 20 --------------------
6 files changed, 34 insertions(+), 57 deletions(-)
diff --git a/fs/smb/client/cifspdu.h b/fs/smb/client/cifspdu.h
index 55aaae6dbc86..157dbc344540 100644
--- a/fs/smb/client/cifspdu.h
+++ b/fs/smb/client/cifspdu.h
@@ -1030,14 +1030,6 @@ typedef struct smb_com_ntransact_rsp {
/* parms and data follow */
} __attribute__((packed)) NTRANSACT_RSP;
-/* See MS-SMB 2.2.7.2.1.1 */
-struct srv_copychunk {
- __le64 SourceOffset;
- __le64 DestinationOffset;
- __le32 CopyLength;
- __u32 Reserved;
-} __packed;
-
typedef struct smb_com_transaction_ioctl_req {
struct smb_hdr hdr; /* wct = 23 */
__u8 MaxSetupCount;
diff --git a/fs/smb/client/smb2ops.c b/fs/smb/client/smb2ops.c
index 1b9995ebb895..a2319eef2801 100644
--- a/fs/smb/client/smb2ops.c
+++ b/fs/smb/client/smb2ops.c
@@ -1524,7 +1524,7 @@ smb2_close_getattr(const unsigned int xid, struct cifs_tcon *tcon,
static int
SMB2_request_res_key(const unsigned int xid, struct cifs_tcon *tcon,
u64 persistent_fid, u64 volatile_fid,
- struct copychunk_ioctl *pcchunk)
+ struct copychunk_ioctl_req *pcchunk)
{
int rc;
unsigned int ret_data_len;
@@ -1857,10 +1857,10 @@ smb2_copychunk_range(const unsigned int xid,
{
int rc = 0;
unsigned int ret_data_len = 0;
- struct copychunk_ioctl *cc_req = NULL;
+ struct copychunk_ioctl_req *cc_req = NULL;
struct copychunk_ioctl_rsp *cc_rsp = NULL;
struct cifs_tcon *tcon;
- struct copychunk *chunk;
+ struct srv_copychunk *chunk;
u32 chunks, chunk_count, chunk_bytes;
u32 copy_bytes, copy_bytes_left;
u32 chunks_written, bytes_written;
diff --git a/fs/smb/client/smb2pdu.h b/fs/smb/client/smb2pdu.h
index a0f73b183c0e..f8aa4bcc5eac 100644
--- a/fs/smb/client/smb2pdu.h
+++ b/fs/smb/client/smb2pdu.h
@@ -158,36 +158,12 @@ struct crt_sd_ctxt {
struct smb3_sd sd;
} __packed;
-
-#define COPY_CHUNK_RES_KEY_SIZE 24
struct resume_key_req {
char ResumeKey[COPY_CHUNK_RES_KEY_SIZE];
__le32 ContextLength; /* MBZ */
char Context[]; /* ignored, Windows sets to 4 bytes of zero */
} __packed;
-
-struct copychunk {
- __le64 SourceOffset;
- __le64 TargetOffset;
- __le32 Length;
- __le32 Reserved;
-} __packed;
-
-/* this goes in the ioctl buffer when doing a copychunk request */
-struct copychunk_ioctl {
- char SourceKey[COPY_CHUNK_RES_KEY_SIZE];
- __le32 ChunkCount;
- __le32 Reserved;
- struct copychunk Chunks[];
-} __packed;
-
-struct copychunk_ioctl_rsp {
- __le32 ChunksWritten;
- __le32 ChunkBytesWritten;
- __le32 TotalBytesWritten;
-} __packed;
-
/* See MS-FSCC 2.3.29 and 2.3.30 */
struct get_retrieval_pointer_count_req {
__le64 StartingVcn; /* virtual cluster number (signed) */
diff --git a/fs/smb/common/smb2pdu.h b/fs/smb/common/smb2pdu.h
index 2b56a17bccdb..319890c6d46b 100644
--- a/fs/smb/common/smb2pdu.h
+++ b/fs/smb/common/smb2pdu.h
@@ -1424,6 +1424,35 @@ struct smb2_ioctl_req {
__u8 Buffer[];
} __packed;
+/* See MS-SMB2 2.2.31.1.1 */
+struct srv_copychunk {
+ __le64 SourceOffset;
+ __le64 TargetOffset;
+ __le32 Length;
+ __le32 Reserved;
+} __packed;
+
+#define COPY_CHUNK_RES_KEY_SIZE 24
+
+/* See MS-SMB2 2.2.31.1 */
+/* this goes in the ioctl buffer when doing a copychunk request */
+struct copychunk_ioctl_req {
+ union {
+ char SourceKey[COPY_CHUNK_RES_KEY_SIZE];
+ __le64 SourceKeyU64[3];
+ };
+ __le32 ChunkCount;
+ __le32 Reserved;
+ struct srv_copychunk Chunks[] __counted_by_le(ChunkCount);
+} __packed;
+
+/* See MS-SMB2 2.2.32.1 */
+struct copychunk_ioctl_rsp {
+ __le32 ChunksWritten;
+ __le32 ChunkBytesWritten;
+ __le32 TotalBytesWritten;
+} __packed;
+
struct smb2_ioctl_rsp {
struct smb2_hdr hdr;
__le16 StructureSize; /* Must be 49 */
diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c
index c1ea4b747625..44e2cef70f27 100644
--- a/fs/smb/server/smb2pdu.c
+++ b/fs/smb/server/smb2pdu.c
@@ -7764,11 +7764,11 @@ static int fsctl_copychunk(struct ksmbd_work *work,
}
src_fp = ksmbd_lookup_foreign_fd(work,
- le64_to_cpu(ci_req->ResumeKey[0]));
+ le64_to_cpu(ci_req->SourceKeyU64[0]));
dst_fp = ksmbd_lookup_fd_slow(work, volatile_id, persistent_id);
ret = -EINVAL;
if (!src_fp ||
- src_fp->persistent_id != le64_to_cpu(ci_req->ResumeKey[1])) {
+ src_fp->persistent_id != le64_to_cpu(ci_req->SourceKeyU64[1])) {
rsp->hdr.Status = STATUS_OBJECT_NAME_NOT_FOUND;
goto out;
}
diff --git a/fs/smb/server/smb2pdu.h b/fs/smb/server/smb2pdu.h
index fb4df2860481..ab4359f384b3 100644
--- a/fs/smb/server/smb2pdu.h
+++ b/fs/smb/server/smb2pdu.h
@@ -136,26 +136,6 @@ struct resume_key_ioctl_rsp {
__u8 Context[4]; /* ignored, Windows sets to 4 bytes of zero */
} __packed;
-struct srv_copychunk {
- __le64 SourceOffset;
- __le64 TargetOffset;
- __le32 Length;
- __le32 Reserved;
-} __packed;
-
-struct copychunk_ioctl_req {
- __le64 ResumeKey[3];
- __le32 ChunkCount;
- __le32 Reserved;
- struct srv_copychunk Chunks[] __counted_by_le(ChunkCount);
-} __packed;
-
-struct copychunk_ioctl_rsp {
- __le32 ChunksWritten;
- __le32 ChunkBytesWritten;
- __le32 TotalBytesWritten;
-} __packed;
-
struct file_sparse {
__u8 SetSparse;
} __packed;
--
2.43.0
next prev parent reply other threads:[~2025-10-27 7:24 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-27 7:12 [PATCH v4 00/24] smb: move duplicate definitions to common header file chenxiaosong.chenxiaosong
2025-10-27 7:12 ` [PATCH v4 01/24] smb: rename common/cifsglob.h to common/smbglob.h chenxiaosong.chenxiaosong
2025-10-27 7:12 ` [PATCH v4 02/24] smb: move smb_version_values " chenxiaosong.chenxiaosong
2025-10-27 7:12 ` [PATCH v4 03/24] smb: move get_rfc1002_len() " chenxiaosong.chenxiaosong
2025-10-27 7:12 ` [PATCH v4 04/24] smb: move SMB1_PROTO_NUMBER " chenxiaosong.chenxiaosong
2025-10-27 7:12 ` [PATCH v4 05/24] smb: move some duplicate definitions to common/smb1pdu.h chenxiaosong.chenxiaosong
2025-10-28 3:42 ` Namjae Jeon
2025-10-28 3:57 ` ChenXiaoSong
2025-10-28 4:02 ` Namjae Jeon
2025-10-31 9:50 ` ChenXiaoSong
2025-10-31 9:57 ` Fwd: " ChenXiaoSong
2025-10-27 7:12 ` [PATCH v4 06/24] smb: move file access permission bits " chenxiaosong.chenxiaosong
2025-10-28 3:36 ` Namjae Jeon
2025-10-28 3:50 ` ChenXiaoSong
[not found] ` <CAH2r5mudENVd0MxrYCidsovUJsk0FheTgkUTXm34UT_+hGNz=g@mail.gmail.com>
[not found] ` <713404c4-9bc0-4410-9004-5337b6b2ddee@linux.dev>
[not found] ` <CAH2r5mv-NxRHr70Tt7kd4Wc89NCtUqqxj7HOtK7st1esNS5GAw@mail.gmail.com>
2025-10-29 1:17 ` ChenXiaoSong
2025-10-29 1:21 ` Steve French
2025-10-27 7:12 ` [PATCH v4 07/24] smb: move SMB frame " chenxiaosong.chenxiaosong
2025-10-27 7:13 ` [PATCH v4 08/24] smb: move FILE_SYSTEM_ATTRIBUTE_INFO " chenxiaosong.chenxiaosong
2025-10-27 7:13 ` [PATCH v4 09/24] smb: move FILE_SYSTEM_DEVICE_INFO " chenxiaosong.chenxiaosong
2025-10-27 7:13 ` [PATCH v4 10/24] smb: move FILE_SYSTEM_INFO " chenxiaosong.chenxiaosong
2025-10-27 7:13 ` [PATCH v4 11/24] smb: move FILE_DIRECTORY_INFO " chenxiaosong.chenxiaosong
2025-10-27 7:13 ` [PATCH v4 12/24] smb: move FILE_FULL_DIRECTORY_INFO " chenxiaosong.chenxiaosong
2025-10-27 7:13 ` [PATCH v4 13/24] smb: move FILE_BOTH_DIRECTORY_INFO " chenxiaosong.chenxiaosong
2025-10-28 3:39 ` Namjae Jeon
2025-10-28 4:04 ` ChenXiaoSong
2025-10-27 7:13 ` [PATCH v4 14/24] smb: move SEARCH_ID_FULL_DIR_INFO " chenxiaosong.chenxiaosong
2025-10-28 3:50 ` Namjae Jeon
2025-10-27 7:21 ` [PATCH v4 15/24] smb: move FILE_SYSTEM_POSIX_INFO " chenxiaosong.chenxiaosong
2025-10-31 1:41 ` ChenXiaoSong
2025-10-31 1:53 ` Steve French
2025-10-31 1:53 ` Steve French
2025-10-31 2:24 ` ChenXiaoSong
2025-10-31 2:31 ` ChenXiaoSong
2025-10-31 2:33 ` Steve French
2025-10-27 7:21 ` [PATCH v4 16/24] smb: move create_durable_req_v2 to common/smb2pdu.h chenxiaosong.chenxiaosong
2025-10-27 7:21 ` [PATCH v4 17/24] smb: move create_durable_handle_reconnect_v2 " chenxiaosong.chenxiaosong
2025-10-27 7:22 ` [PATCH v4 18/24] smb: move create_durable_rsp_v2 " chenxiaosong.chenxiaosong
2025-10-27 7:22 ` [PATCH v4 19/24] smb/server: remove create_durable_reconn_req chenxiaosong.chenxiaosong
2025-10-29 3:54 ` Namjae Jeon
2025-10-29 4:17 ` ChenXiaoSong
2025-10-27 7:22 ` [PATCH v4 20/24] smb: move smb2_file_network_open_info to common/smb2pdu.h chenxiaosong.chenxiaosong
2025-10-27 7:22 ` [PATCH v4 21/24] smb: move smb_sockaddr_in and smb_sockaddr_in6 " chenxiaosong.chenxiaosong
2025-10-27 7:22 ` chenxiaosong.chenxiaosong [this message]
2025-10-27 7:22 ` [PATCH v4 23/24] smb: move resume_key_ioctl_rsp " chenxiaosong.chenxiaosong
2025-10-27 7:22 ` [PATCH v4 24/24] smb: move some duplicate definitions " chenxiaosong.chenxiaosong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251027072206.3468578-8-chenxiaosong.chenxiaosong@linux.dev \
--to=chenxiaosong.chenxiaosong@linux.dev \
--cc=chenxiaosong@kylinos.cn \
--cc=christophe.jaillet@wanadoo.fr \
--cc=linkinjeon@kernel.org \
--cc=linkinjeon@samba.org \
--cc=linux-cifs@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sfrench@samba.org \
--cc=smfrench@gmail.com \
--cc=zhangguodong@kylinos.cn \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.