From: ChenXiaoSong <chenxiaosong.chenxiaosong@linux.dev>
To: chenxiaosong.chenxiaosong@linux.dev, 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
Subject: Re: [PATCH v4 15/24] smb: move FILE_SYSTEM_POSIX_INFO to common/smb1pdu.h
Date: Fri, 31 Oct 2025 09:41:20 +0800 [thread overview]
Message-ID: <a0d97e2d-91f5-448c-883c-4d0930375f82@linux.dev> (raw)
In-Reply-To: <20251027072206.3468578-1-chenxiaosong.chenxiaosong@linux.dev>
Hi Namjae and Steve,
I couldn’t find the definition of FILE_SYSTEM_POSIX_INFO in any of the
following MS documents:
- MS-FSCC:
https://learn.microsoft.com/pdf?url=https%3A%2F%2Flearn.microsoft.com%2Fen-us%2Fopenspecs%2Fwindows_protocols%2Fms-fscc%2Ftoc.json
- MS-CIFS:
https://learn.microsoft.com/pdf?url=https%3A%2F%2Flearn.microsoft.com%2Fen-us%2Fopenspecs%2Fwindows_protocols%2Fms-cifs%2Ftoc.json
- MS-SMB:
https://learn.microsoft.com/pdf?url=https%3A%2F%2Flearn.microsoft.com%2Fen-us%2Fopenspecs%2Fwindows_protocols%2Fms-smb%2Ftoc.json
- MS-SMB2:
https://learn.microsoft.com/pdf?url=https%3A%2F%2Flearn.microsoft.com%2Fen-us%2Fopenspecs%2Fwindows_protocols%2Fms-smb2%2Ftoc.json
Is this structure defined in other MS document?
On 10/27/25 3:21 PM, chenxiaosong.chenxiaosong@linux.dev wrote:
> From: ChenXiaoSong <chenxiaosong@kylinos.cn>
>
> Rename "struct filesystem_posix_info" to "FILE_SYSTEM_POSIX_INFO",
> then move duplicate definitions to common header file.
>
> Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
> ---
> fs/smb/client/cifspdu.h | 22 ----------------------
> fs/smb/common/smb1pdu.h | 23 +++++++++++++++++++++++
> fs/smb/server/smb2pdu.c | 4 ++--
> fs/smb/server/smb_common.h | 23 -----------------------
> 4 files changed, 25 insertions(+), 47 deletions(-)
>
> diff --git a/fs/smb/client/cifspdu.h b/fs/smb/client/cifspdu.h
> index d106c6850807..55aaae6dbc86 100644
> --- a/fs/smb/client/cifspdu.h
> +++ b/fs/smb/client/cifspdu.h
> @@ -1875,28 +1875,6 @@ typedef struct {
>
> #define CIFS_POSIX_EXTENSIONS 0x00000010 /* support for new QFSInfo */
>
> -typedef struct {
> - /* For undefined recommended transfer size return -1 in that field */
> - __le32 OptimalTransferSize; /* bsize on some os, iosize on other os */
> - __le32 BlockSize;
> - /* The next three fields are in terms of the block size.
> - (above). If block size is unknown, 4096 would be a
> - reasonable block size for a server to report.
> - Note that returning the blocks/blocksavail removes need
> - to make a second call (to QFSInfo level 0x103 to get this info.
> - UserBlockAvail is typically less than or equal to BlocksAvail,
> - if no distinction is made return the same value in each */
> - __le64 TotalBlocks;
> - __le64 BlocksAvail; /* bfree */
> - __le64 UserBlocksAvail; /* bavail */
> - /* For undefined Node fields or FSID return -1 */
> - __le64 TotalFileNodes;
> - __le64 FreeFileNodes;
> - __le64 FileSysIdentifier; /* fsid */
> - /* NB Namelen comes from FILE_SYSTEM_ATTRIBUTE_INFO call */
> - /* NB flags can come from FILE_SYSTEM_DEVICE_INFO call */
> -} __attribute__((packed)) FILE_SYSTEM_POSIX_INFO;
> -
> /* DeviceType Flags */
> #define FILE_DEVICE_CD_ROM 0x00000002
> #define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003
> diff --git a/fs/smb/common/smb1pdu.h b/fs/smb/common/smb1pdu.h
> index 82331a8f70e8..38b9c091baab 100644
> --- a/fs/smb/common/smb1pdu.h
> +++ b/fs/smb/common/smb1pdu.h
> @@ -327,6 +327,29 @@ typedef struct {
> __le32 BytesPerSector;
> } __packed FILE_SYSTEM_INFO; /* size info, level 0x103 */
>
> +typedef struct {
> + /* For undefined recommended transfer size return -1 in that field */
> + __le32 OptimalTransferSize; /* bsize on some os, iosize on other os */
> + __le32 BlockSize;
> + /* The next three fields are in terms of the block size.
> + * (above). If block size is unknown, 4096 would be a
> + * reasonable block size for a server to report.
> + * Note that returning the blocks/blocksavail removes need
> + * to make a second call (to QFSInfo level 0x103 to get this info.
> + * UserBlockAvail is typically less than or equal to BlocksAvail,
> + * if no distinction is made return the same value in each
> + */
> + __le64 TotalBlocks;
> + __le64 BlocksAvail; /* bfree */
> + __le64 UserBlocksAvail; /* bavail */
> + /* For undefined Node fields or FSID return -1 */
> + __le64 TotalFileNodes;
> + __le64 FreeFileNodes;
> + __le64 FileSysIdentifier; /* fsid */
> + /* NB Namelen comes from FILE_SYSTEM_ATTRIBUTE_INFO call */
> + /* NB flags can come from FILE_SYSTEM_DEVICE_INFO call */
> +} __packed FILE_SYSTEM_POSIX_INFO;
> +
> /* See MS-CIFS 2.2.8.2.5 */
> typedef struct {
> __le32 DeviceType;
> diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c
> index 47fab72a3588..dc0f0ed4ccb6 100644
> --- a/fs/smb/server/smb2pdu.c
> +++ b/fs/smb/server/smb2pdu.c
> @@ -5633,14 +5633,14 @@ static int smb2_get_info_filesystem(struct ksmbd_work *work,
> }
> case FS_POSIX_INFORMATION:
> {
> - struct filesystem_posix_info *info;
> + FILE_SYSTEM_POSIX_INFO *info;
>
> if (!work->tcon->posix_extensions) {
> pr_err("client doesn't negotiate with SMB3.1.1 POSIX Extensions\n");
> path_put(&path);
> return -EOPNOTSUPP;
> } else {
> - info = (struct filesystem_posix_info *)(rsp->Buffer);
> + info = (FILE_SYSTEM_POSIX_INFO *)(rsp->Buffer);
> info->OptimalTransferSize = cpu_to_le32(stfs.f_bsize);
> info->BlockSize = cpu_to_le32(stfs.f_bsize);
> info->TotalBlocks = cpu_to_le64(stfs.f_blocks);
> diff --git a/fs/smb/server/smb_common.h b/fs/smb/server/smb_common.h
> index 6141ca8f7e1c..61048568f4c7 100644
> --- a/fs/smb/server/smb_common.h
> +++ b/fs/smb/server/smb_common.h
> @@ -108,29 +108,6 @@ struct file_id_both_directory_info {
> char FileName[];
> } __packed;
>
> -struct filesystem_posix_info {
> - /* For undefined recommended transfer size return -1 in that field */
> - __le32 OptimalTransferSize; /* bsize on some os, iosize on other os */
> - __le32 BlockSize;
> - /* The next three fields are in terms of the block size.
> - * (above). If block size is unknown, 4096 would be a
> - * reasonable block size for a server to report.
> - * Note that returning the blocks/blocksavail removes need
> - * to make a second call (to QFSInfo level 0x103 to get this info.
> - * UserBlockAvail is typically less than or equal to BlocksAvail,
> - * if no distinction is made return the same value in each
> - */
> - __le64 TotalBlocks;
> - __le64 BlocksAvail; /* bfree */
> - __le64 UserBlocksAvail; /* bavail */
> - /* For undefined Node fields or FSID return -1 */
> - __le64 TotalFileNodes;
> - __le64 FreeFileNodes;
> - __le64 FileSysIdentifier; /* fsid */
> - /* NB Namelen comes from FILE_SYSTEM_ATTRIBUTE_INFO call */
> - /* NB flags can come from FILE_SYSTEM_DEVICE_INFO call */
> -} __packed;
> -
> struct smb_version_ops {
> u16 (*get_cmd_val)(struct ksmbd_work *swork);
> int (*init_rsp_hdr)(struct ksmbd_work *swork);
next prev parent reply other threads:[~2025-10-31 1:42 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 [this message]
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 ` [PATCH v4 22/24] smb: move copychunk definitions " chenxiaosong.chenxiaosong
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=a0d97e2d-91f5-448c-883c-4d0930375f82@linux.dev \
--to=chenxiaosong.chenxiaosong@linux.dev \
--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 \
/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.