Re: [PATCH v4 19/24] smb/server: remove create_durable_reconn_req

ChenXiaoSong
2025-10-29T04:18:32Z

They are:

- SMB2_CREATE_DURABLE_HANDLE_REQUEST in MS-SMB2 2.2.13.2.3
- SMB2_CREATE_DURABLE_HANDLE_RECONNECT in MS-SMB2 2.2.13.2.4
- SMB2_FILEID in MS-SMB2 2.2.14.1

We can uniformly name them create_durable:

struct create_durable {
...
union {
__u8 Reserved[16]; // DurableRequest of
SMB2_CREATE_DURABLE_HANDLE_REQUEST, A 16-byte field that MUST NOT be
used and MUST be reserved. This value MUST be set to 0 by the client and
ignored by the server.
struct {
__u64 PersistentFileId; // See 2.2.14.1 SMB2_FILEID
__u64 VolatileFileId; // See 2.2.14.1 SMB2_FILEID
} Fid; // Data of SMB2_CREATE_DURABLE_HANDLE_RECONNECT,
An SMB2_FILEID structure, as specified in section 2.2.14.1, for the open
that is being reestablished.
} Data;
} __packed;

Thanks,
ChenXiaoSong.

On 10/29/25 11:54 AM, Namjae Jeon wrote:
> On Mon, Oct 27, 2025 at 4:23 PM <chenxiaosong.chenxiaosong@linux.dev> wrote:
>>
>> From: ChenXiaoSong <chenxiaosong@kylinos.cn>
>>
>> The fields in struct create_durable_reconn_req and struct create_durable
>> are exactly the same.
>>
>> Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
>> ---
>> fs/smb/server/smb2pdu.c | 6 +++---
>> fs/smb/server/smb2pdu.h | 12 ------------
>> 2 files changed, 3 insertions(+), 15 deletions(-)
>>
>> diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c
>> index 6b3503c7bfaa..3e8344fa163b 100644
>> --- a/fs/smb/server/smb2pdu.c
>> +++ b/fs/smb/server/smb2pdu.c
>> @@ -2766,7 +2766,7 @@ static int parse_durable_handle_context(struct ksmbd_work *work,
>> }
>> case DURABLE_RECONN:
>> {
>> - struct create_durable_reconn_req *recon;
>> + struct create_durable *recon;
>>
>> if (dh_info->type == DURABLE_RECONN_V2 ||
>> dh_info->type == DURABLE_REQ_V2) {
>> @@ -2776,12 +2776,12 @@ static int parse_durable_handle_context(struct ksmbd_work *work,
>>
>> if (le16_to_cpu(context->DataOffset) +
>> le32_to_cpu(context->DataLength) <
>> - sizeof(struct create_durable_reconn_req)) {
>> + sizeof(struct create_durable)) {
> Please check the specification, Which structure name is correct?
> thanks.