get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/1.0/patches/2196717/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2196717,
    "url": "http://patchwork.ozlabs.org/api/1.0/patches/2196717/?format=api",
    "project": {
        "id": 12,
        "url": "http://patchwork.ozlabs.org/api/1.0/projects/12/?format=api",
        "name": "Linux CIFS Client",
        "link_name": "linux-cifs-client",
        "list_id": "linux-cifs.vger.kernel.org",
        "list_email": "linux-cifs@vger.kernel.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20260216082018.156695-6-zhang.guodong@linux.dev>",
    "date": "2026-02-16T08:20:18",
    "name": "[v3,5/5] smb: introduce struct file_posix_info",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "e192163c3a942c1fa6d9d448892392de557a7138",
    "submitter": {
        "id": 92649,
        "url": "http://patchwork.ozlabs.org/api/1.0/people/92649/?format=api",
        "name": "ZhangGuoDong",
        "email": "zhang.guodong@linux.dev"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/linux-cifs-client/patch/20260216082018.156695-6-zhang.guodong@linux.dev/mbox/",
    "series": [
        {
            "id": 492258,
            "url": "http://patchwork.ozlabs.org/api/1.0/series/492258/?format=api",
            "date": "2026-02-16T08:20:13",
            "name": "smb: move duplicate definitions into common header file, part 2",
            "version": 3,
            "mbox": "http://patchwork.ozlabs.org/series/492258/mbox/"
        }
    ],
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2196717/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "\n <linux-cifs+bounces-9395-incoming=patchwork.ozlabs.org@vger.kernel.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "linux-cifs@vger.kernel.org"
        ],
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=linux.dev header.i=@linux.dev header.a=rsa-sha256\n header.s=key1 header.b=LgX5N02h;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.232.135.74; helo=sto.lore.kernel.org;\n envelope-from=linux-cifs+bounces-9395-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)",
            "smtp.subspace.kernel.org;\n\tdkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev\n header.b=\"LgX5N02h\"",
            "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=95.215.58.186",
            "smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=linux.dev",
            "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=linux.dev"
        ],
        "Received": [
            "from sto.lore.kernel.org (sto.lore.kernel.org [172.232.135.74])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fDwjr6rSlz1xpY\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 16 Feb 2026 19:22:08 +1100 (AEDT)",
            "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sto.lore.kernel.org (Postfix) with ESMTP id CF8F13001FEA\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 16 Feb 2026 08:22:05 +0000 (UTC)",
            "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 0B2582989BC;\n\tMon, 16 Feb 2026 08:22:04 +0000 (UTC)",
            "from out-186.mta1.migadu.com (out-186.mta1.migadu.com\n [95.215.58.186])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 1E7A82475E3\n\tfor <linux-cifs@vger.kernel.org>; Mon, 16 Feb 2026 08:22:01 +0000 (UTC)"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1771230123; cv=none;\n b=Ojky5xA5gMnDq4eeb2sU96EUcIQAoaBC2GWzmpqx+tNy//68ACoOZS04/ZuF++/LokJvAobQzTdPu9mSdiUvgfOu2+bzt/0ml/6aaOoz6FrtJxdAiuo8VWE2/y2jPiGhCwHOec6X2wa5aglT1cQSTbhyu2gIpVKHbFyQyZHDwl8=",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1771230123; c=relaxed/simple;\n\tbh=k995GR2TdSH5dycjh98JpWMeOgbjnx3No93aPApt+Z0=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version;\n b=GxzJb2mPdA1AaUzDYpGeaUJObv7+Koq49w+uMCJ5uMDFHsQwqzqJLye4QmMng9SJa2H5qDl8JRqJ2tzmfNJhA8ywrx9WwIdCPU6Q3Pjnf0GStRpkPmr5IWWVj5Vt/0loc99zF3VSJXcIksdBacXFu7T0SsI2Me+/2q9nSpuTzok=",
        "ARC-Authentication-Results": "i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=linux.dev;\n spf=pass smtp.mailfrom=linux.dev;\n dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev\n header.b=LgX5N02h; arc=none smtp.client-ip=95.215.58.186",
        "X-Report-Abuse": "Please report any abuse attempt to abuse@migadu.com and\n include these headers.",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1;\n\tt=1771230120;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\t to:to:cc:cc:mime-version:mime-version:\n\t content-transfer-encoding:content-transfer-encoding:\n\t in-reply-to:in-reply-to:references:references;\n\tbh=r5fcnwoarKNK0sLsinBf+GNVlx6irWWtLjAMOo9Xcpc=;\n\tb=LgX5N02hj+ddGgcN+UUtUbAQz2+2ew8tbNabyKY3WTNFoeP0JeTCYiRMWTOWWf0BnqnXAe\n\tbJl7iE0M17JzGSd5z0zvSLs1AQddaAMMnu7vjXdnZ9b8J3Z9DakTkaV6ezkQuhP4BF4lQk\n\tVr0dQ4PcSYq6plebYpdwForQAxD6dWA=",
        "From": "zhang.guodong@linux.dev",
        "To": "smfrench@gmail.com,\n\tlinkinjeon@kernel.org,\n\tpc@manguebit.org,\n\tronniesahlberg@gmail.com,\n\tsprasad@microsoft.com,\n\ttom@talpey.com,\n\tbharathsm@microsoft.com,\n\tsenozhatsky@chromium.org,\n\tdhowells@redhat.com,\n\tchenxiaosong@kylinos.cn,\n\tchenxiaosong.chenxiaosong@linux.dev",
        "Cc": "linux-cifs@vger.kernel.org,\n\tZhangGuoDong <zhangguodong@kylinos.cn>",
        "Subject": "[PATCH v3 5/5] smb: introduce struct file_posix_info",
        "Date": "Mon, 16 Feb 2026 08:20:18 +0000",
        "Message-ID": "<20260216082018.156695-6-zhang.guodong@linux.dev>",
        "In-Reply-To": "<20260216082018.156695-1-zhang.guodong@linux.dev>",
        "References": "<20260216082018.156695-1-zhang.guodong@linux.dev>",
        "Precedence": "bulk",
        "X-Mailing-List": "linux-cifs@vger.kernel.org",
        "List-Id": "<linux-cifs.vger.kernel.org>",
        "List-Subscribe": "<mailto:linux-cifs+subscribe@vger.kernel.org>",
        "List-Unsubscribe": "<mailto:linux-cifs+unsubscribe@vger.kernel.org>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-Migadu-Flow": "FLOW_OUT"
    },
    "content": "From: ZhangGuoDong <zhangguodong@kylinos.cn>\n\nModify the following places:\n\n  - introduce new struct file_posix_info\n  - some fields in \"struct smb311_posix_qinfo\" -> \"struct file_posix_info\"\n  - some fields in \"struct smb2_posix_info\" -> \"struct file_posix_info\"\n\nSigned-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn>\nSigned-off-by: ZhangGuoDong <zhangguodong@kylinos.cn>\n---\n fs/smb/client/inode.c   | 22 ++++++------\n fs/smb/client/readdir.c | 28 ++++++++--------\n fs/smb/client/reparse.h |  4 +--\n fs/smb/client/smb2pdu.h | 15 +--------\n fs/smb/common/fscc.h    | 43 +++++++++++++++++++++++-\n fs/smb/common/smb2pdu.h | 25 --------------\n fs/smb/server/smb2pdu.c | 74 ++++++++++++++++++++---------------------\n fs/smb/server/smb2pdu.h | 21 +-----------\n 8 files changed, 108 insertions(+), 124 deletions(-)",
    "diff": "diff --git a/fs/smb/client/inode.c b/fs/smb/client/inode.c\nindex c23c057162e6..b183db7bbb52 100644\n--- a/fs/smb/client/inode.c\n+++ b/fs/smb/client/inode.c\n@@ -840,16 +840,16 @@ static void smb311_posix_info_to_fattr(struct cifs_fattr *fattr,\n \tmemset(fattr, 0, sizeof(*fattr));\n \n \t/* no fattr->flags to set */\n-\tfattr->cf_cifsattrs = le32_to_cpu(info->DosAttributes);\n-\tfattr->cf_uniqueid = le64_to_cpu(info->Inode);\n+\tfattr->cf_cifsattrs = le32_to_cpu(info->fpinfo.DosAttributes);\n+\tfattr->cf_uniqueid = le64_to_cpu(info->fpinfo.Inode);\n \n-\tif (info->LastAccessTime)\n-\t\tfattr->cf_atime = cifs_NTtimeToUnix(info->LastAccessTime);\n+\tif (info->fpinfo.LastAccessTime)\n+\t\tfattr->cf_atime = cifs_NTtimeToUnix(info->fpinfo.LastAccessTime);\n \telse\n \t\tktime_get_coarse_real_ts64(&fattr->cf_atime);\n \n-\tfattr->cf_ctime = cifs_NTtimeToUnix(info->ChangeTime);\n-\tfattr->cf_mtime = cifs_NTtimeToUnix(info->LastWriteTime);\n+\tfattr->cf_ctime = cifs_NTtimeToUnix(info->fpinfo.ChangeTime);\n+\tfattr->cf_mtime = cifs_NTtimeToUnix(info->fpinfo.LastWriteTime);\n \n \tif (data->adjust_tz) {\n \t\tfattr->cf_ctime.tv_sec += tcon->ses->server->timeAdj;\n@@ -860,11 +860,11 @@ static void smb311_posix_info_to_fattr(struct cifs_fattr *fattr,\n \t * The srv fs device id is overridden on network mount so setting\n \t * @fattr->cf_rdev isn't needed here.\n \t */\n-\tfattr->cf_eof = le64_to_cpu(info->EndOfFile);\n-\tfattr->cf_bytes = le64_to_cpu(info->AllocationSize);\n-\tfattr->cf_createtime = le64_to_cpu(info->CreationTime);\n-\tfattr->cf_nlink = le32_to_cpu(info->HardLinks);\n-\tfattr->cf_mode = wire_mode_to_posix(le32_to_cpu(info->Mode),\n+\tfattr->cf_eof = le64_to_cpu(info->fpinfo.EndOfFile);\n+\tfattr->cf_bytes = le64_to_cpu(info->fpinfo.AllocationSize);\n+\tfattr->cf_createtime = le64_to_cpu(info->fpinfo.CreationTime);\n+\tfattr->cf_nlink = le32_to_cpu(info->fpinfo.HardLinks);\n+\tfattr->cf_mode = wire_mode_to_posix(le32_to_cpu(info->fpinfo.Mode),\n \t\t\t\t\t    fattr->cf_cifsattrs & ATTR_DIRECTORY);\n \n \tif (cifs_open_data_reparse(data) &&\ndiff --git a/fs/smb/client/readdir.c b/fs/smb/client/readdir.c\nindex 67a8555efa1e..29dfaffaa5bb 100644\n--- a/fs/smb/client/readdir.c\n+++ b/fs/smb/client/readdir.c\n@@ -246,22 +246,22 @@ cifs_posix_to_fattr(struct cifs_fattr *fattr, struct smb2_posix_info *info,\n \tposix_info_parse(info, NULL, &parsed);\n \n \tmemset(fattr, 0, sizeof(*fattr));\n-\tfattr->cf_uniqueid = le64_to_cpu(info->Inode);\n-\tfattr->cf_bytes = le64_to_cpu(info->AllocationSize);\n-\tfattr->cf_eof = le64_to_cpu(info->EndOfFile);\n+\tfattr->cf_uniqueid = le64_to_cpu(info->fpinfo.Inode);\n+\tfattr->cf_bytes = le64_to_cpu(info->fpinfo.AllocationSize);\n+\tfattr->cf_eof = le64_to_cpu(info->fpinfo.EndOfFile);\n \n-\tfattr->cf_atime = cifs_NTtimeToUnix(info->LastAccessTime);\n-\tfattr->cf_mtime = cifs_NTtimeToUnix(info->LastWriteTime);\n-\tfattr->cf_ctime = cifs_NTtimeToUnix(info->CreationTime);\n+\tfattr->cf_atime = cifs_NTtimeToUnix(info->fpinfo.LastAccessTime);\n+\tfattr->cf_mtime = cifs_NTtimeToUnix(info->fpinfo.LastWriteTime);\n+\tfattr->cf_ctime = cifs_NTtimeToUnix(info->fpinfo.CreationTime);\n \n-\tfattr->cf_nlink = le32_to_cpu(info->HardLinks);\n-\tfattr->cf_cifsattrs = le32_to_cpu(info->DosAttributes);\n+\tfattr->cf_nlink = le32_to_cpu(info->fpinfo.HardLinks);\n+\tfattr->cf_cifsattrs = le32_to_cpu(info->fpinfo.DosAttributes);\n \n \tif (fattr->cf_cifsattrs & ATTR_REPARSE_POINT)\n-\t\tfattr->cf_cifstag = le32_to_cpu(info->ReparseTag);\n+\t\tfattr->cf_cifstag = le32_to_cpu(info->fpinfo.ReparseTag);\n \n \t/* The Mode field in the response can now include the file type as well */\n-\tfattr->cf_mode = wire_mode_to_posix(le32_to_cpu(info->Mode),\n+\tfattr->cf_mode = wire_mode_to_posix(le32_to_cpu(info->fpinfo.Mode),\n \t\t\t\t\t    fattr->cf_cifsattrs & ATTR_DIRECTORY);\n \tfattr->cf_dtype = S_DT(fattr->cf_mode);\n \n@@ -276,9 +276,9 @@ cifs_posix_to_fattr(struct cifs_fattr *fattr, struct smb2_posix_info *info,\n \t}\n \n \tcifs_dbg(FYI, \"posix fattr: dev %d, reparse %d, mode %o\\n\",\n-\t\t le32_to_cpu(info->DeviceId),\n-\t\t le32_to_cpu(info->ReparseTag),\n-\t\t le32_to_cpu(info->Mode));\n+\t\t le32_to_cpu(info->fpinfo.DeviceId),\n+\t\t le32_to_cpu(info->fpinfo.ReparseTag),\n+\t\t le32_to_cpu(info->fpinfo.Mode));\n \n \tsid_to_id(cifs_sb, &parsed.owner, fattr, SIDOWNER);\n \tsid_to_id(cifs_sb, &parsed.group, fattr, SIDGROUP);\n@@ -515,7 +515,7 @@ static void cifs_fill_dirent_posix(struct cifs_dirent *de,\n \tde->name = parsed.name;\n \tde->namelen = parsed.name_len;\n \tde->resume_key = info->Ignored;\n-\tde->ino = le64_to_cpu(info->Inode);\n+\tde->ino = le64_to_cpu(info->fpinfo.Inode);\n }\n \n static void cifs_fill_dirent_unix(struct cifs_dirent *de,\ndiff --git a/fs/smb/client/reparse.h b/fs/smb/client/reparse.h\nindex 570b0d25aeba..410ee9133aea 100644\n--- a/fs/smb/client/reparse.h\n+++ b/fs/smb/client/reparse.h\n@@ -106,10 +106,10 @@ static inline bool cifs_open_data_reparse(struct cifs_open_info_data *data)\n \tif (data->contains_posix_file_info) {\n \t\tstruct smb311_posix_qinfo *fi = &data->posix_fi;\n \n-\t\tattrs = le32_to_cpu(fi->DosAttributes);\n+\t\tattrs = le32_to_cpu(fi->fpinfo.DosAttributes);\n \t\tif (data->reparse_point) {\n \t\t\tattrs |= ATTR_REPARSE_POINT;\n-\t\t\tfi->DosAttributes = cpu_to_le32(attrs);\n+\t\t\tfi->fpinfo.DosAttributes = cpu_to_le32(attrs);\n \t\t}\n \n \t} else {\ndiff --git a/fs/smb/client/smb2pdu.h b/fs/smb/client/smb2pdu.h\nindex 4928fb620233..07ba081750fb 100644\n--- a/fs/smb/client/smb2pdu.h\n+++ b/fs/smb/client/smb2pdu.h\n@@ -269,20 +269,7 @@ struct create_posix_rsp {\n struct smb2_posix_info {\n \t__le32 NextEntryOffset;\n \t__u32 Ignored;\n-\t__le64 CreationTime;\n-\t__le64 LastAccessTime;\n-\t__le64 LastWriteTime;\n-\t__le64 ChangeTime;\n-\t__le64 EndOfFile;\n-\t__le64 AllocationSize;\n-\t__le32 DosAttributes;\n-\t__le64 Inode;\n-\t__le32 DeviceId;\n-\t__le32 Zero;\n-\t/* beginning of POSIX Create Context Response */\n-\t__le32 HardLinks;\n-\t__le32 ReparseTag;\n-\t__le32 Mode;\n+\tstruct file_posix_info fpinfo;\n \t/*\n \t * var sized owner SID\n \t * var sized group SID\ndiff --git a/fs/smb/common/fscc.h b/fs/smb/common/fscc.h\nindex 716864b173fd..117bdc73e2a6 100644\n--- a/fs/smb/common/fscc.h\n+++ b/fs/smb/common/fscc.h\n@@ -537,9 +537,50 @@ struct file_notify_information {\n } __packed;\n \n /*\n- * See POSIX Extensions to MS-FSCC 2.3.2.1\n+ * [POSIX-FSCC] POSIX Extensions to MS-FSCC\n  * Link: https://gitlab.com/samba-team/smb3-posix-spec/-/blob/master/fscc_posix_extensions.md\n  */\n+\n+/*\n+ * This information class is used to query file posix information.\n+ * See POSIX-FSCC 2.3.1.1\n+ */\n+struct file_posix_info {\n+\t__le64 CreationTime;\n+\t__le64 LastAccessTime;\n+\t__le64 LastWriteTime;\n+\t__le64 ChangeTime;\n+\t__le64 EndOfFile;\n+\t__le64 AllocationSize;\n+\t__le32 DosAttributes;\n+\t__le64 Inode;\n+\t__le32 DeviceId;\n+\t__le32 Zero;\n+\t/*\n+\t * beginning of POSIX Create Context Response\n+\t * See POSIX-SMB2 2.2.14.2.16\n+\t */\n+\t__le32 HardLinks;\n+\t__le32 ReparseTag;\n+\t__le32 Mode;\n+\t// var sized owner SID\n+\t// var sized group SID\n+\t/* end of POSIX Create Context Response */\n+\t// le32 filenamelength\n+\t// u8 filename[]\n+} __packed;\n+\n+/* Level 100 query info */\n+struct smb311_posix_qinfo {\n+\tstruct file_posix_info fpinfo;\n+\tu8     Sids[];\n+\t/*\n+\t * le32 filenamelength\n+\t * u8  filename[]\n+\t */\n+} __packed;\n+\n+/* See POSIX-FSCC 2.3.2.1 */\n typedef struct {\n \t/* For undefined recommended transfer size return -1 in that field */\n \t__le32 OptimalTransferSize;  /* bsize on some os, iosize on other os */\ndiff --git a/fs/smb/common/smb2pdu.h b/fs/smb/common/smb2pdu.h\nindex 5dd4ab245453..f78dbf00a545 100644\n--- a/fs/smb/common/smb2pdu.h\n+++ b/fs/smb/common/smb2pdu.h\n@@ -1610,31 +1610,6 @@ struct smb2_query_info_rsp {\n \t__u8   Buffer[];\n } __packed;\n \n-/* Level 100 query info */\n-struct smb311_posix_qinfo {\n-\t__le64 CreationTime;\n-\t__le64 LastAccessTime;\n-\t__le64 LastWriteTime;\n-\t__le64 ChangeTime;\n-\t__le64 EndOfFile;\n-\t__le64 AllocationSize;\n-\t__le32 DosAttributes;\n-\t__le64 Inode;\n-\t__le32 DeviceId;\n-\t__le32 Zero;\n-\t/* beginning of POSIX Create Context Response */\n-\t__le32 HardLinks;\n-\t__le32 ReparseTag;\n-\t__le32 Mode;\n-\tu8     Sids[];\n-\t/*\n-\t * var sized owner SID\n-\t * var sized group SID\n-\t * le32 filenamelength\n-\t * u8  filename[]\n-\t */\n-} __packed;\n-\n /* See MS-SMB2 2.2.23 through 2.2.25 */\n struct smb2_oplock_break {\n \tstruct smb2_hdr hdr;\ndiff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c\nindex eb2129ab7156..1b372363cbf7 100644\n--- a/fs/smb/server/smb2pdu.c\n+++ b/fs/smb/server/smb2pdu.c\n@@ -4051,44 +4051,44 @@ static int smb2_populate_readdir_entry(struct ksmbd_conn *conn, int info_level,\n \n \t\tposix_info = (struct smb2_posix_info *)kstat;\n \t\tposix_info->Ignored = 0;\n-\t\tposix_info->CreationTime = cpu_to_le64(ksmbd_kstat->create_time);\n+\t\tposix_info->fpinfo.CreationTime = cpu_to_le64(ksmbd_kstat->create_time);\n \t\ttime = ksmbd_UnixTimeToNT(ksmbd_kstat->kstat->ctime);\n-\t\tposix_info->ChangeTime = cpu_to_le64(time);\n+\t\tposix_info->fpinfo.ChangeTime = cpu_to_le64(time);\n \t\ttime = ksmbd_UnixTimeToNT(ksmbd_kstat->kstat->atime);\n-\t\tposix_info->LastAccessTime = cpu_to_le64(time);\n+\t\tposix_info->fpinfo.LastAccessTime = cpu_to_le64(time);\n \t\ttime = ksmbd_UnixTimeToNT(ksmbd_kstat->kstat->mtime);\n-\t\tposix_info->LastWriteTime = cpu_to_le64(time);\n-\t\tposix_info->EndOfFile = cpu_to_le64(ksmbd_kstat->kstat->size);\n-\t\tposix_info->AllocationSize = cpu_to_le64(ksmbd_kstat->kstat->blocks << 9);\n-\t\tposix_info->DeviceId = cpu_to_le32(ksmbd_kstat->kstat->rdev);\n-\t\tposix_info->HardLinks = cpu_to_le32(ksmbd_kstat->kstat->nlink);\n-\t\tposix_info->Mode = cpu_to_le32(ksmbd_kstat->kstat->mode & 0777);\n+\t\tposix_info->fpinfo.LastWriteTime = cpu_to_le64(time);\n+\t\tposix_info->fpinfo.EndOfFile = cpu_to_le64(ksmbd_kstat->kstat->size);\n+\t\tposix_info->fpinfo.AllocationSize = cpu_to_le64(ksmbd_kstat->kstat->blocks << 9);\n+\t\tposix_info->fpinfo.DeviceId = cpu_to_le32(ksmbd_kstat->kstat->rdev);\n+\t\tposix_info->fpinfo.HardLinks = cpu_to_le32(ksmbd_kstat->kstat->nlink);\n+\t\tposix_info->fpinfo.Mode = cpu_to_le32(ksmbd_kstat->kstat->mode & 0777);\n \t\tswitch (ksmbd_kstat->kstat->mode & S_IFMT) {\n \t\tcase S_IFDIR:\n-\t\t\tposix_info->Mode |= cpu_to_le32(POSIX_TYPE_DIR << POSIX_FILETYPE_SHIFT);\n+\t\t\tposix_info->fpinfo.Mode |= cpu_to_le32(POSIX_TYPE_DIR << POSIX_FILETYPE_SHIFT);\n \t\t\tbreak;\n \t\tcase S_IFLNK:\n-\t\t\tposix_info->Mode |= cpu_to_le32(POSIX_TYPE_SYMLINK << POSIX_FILETYPE_SHIFT);\n+\t\t\tposix_info->fpinfo.Mode |= cpu_to_le32(POSIX_TYPE_SYMLINK << POSIX_FILETYPE_SHIFT);\n \t\t\tbreak;\n \t\tcase S_IFCHR:\n-\t\t\tposix_info->Mode |= cpu_to_le32(POSIX_TYPE_CHARDEV << POSIX_FILETYPE_SHIFT);\n+\t\t\tposix_info->fpinfo.Mode |= cpu_to_le32(POSIX_TYPE_CHARDEV << POSIX_FILETYPE_SHIFT);\n \t\t\tbreak;\n \t\tcase S_IFBLK:\n-\t\t\tposix_info->Mode |= cpu_to_le32(POSIX_TYPE_BLKDEV << POSIX_FILETYPE_SHIFT);\n+\t\t\tposix_info->fpinfo.Mode |= cpu_to_le32(POSIX_TYPE_BLKDEV << POSIX_FILETYPE_SHIFT);\n \t\t\tbreak;\n \t\tcase S_IFIFO:\n-\t\t\tposix_info->Mode |= cpu_to_le32(POSIX_TYPE_FIFO << POSIX_FILETYPE_SHIFT);\n+\t\t\tposix_info->fpinfo.Mode |= cpu_to_le32(POSIX_TYPE_FIFO << POSIX_FILETYPE_SHIFT);\n \t\t\tbreak;\n \t\tcase S_IFSOCK:\n-\t\t\tposix_info->Mode |= cpu_to_le32(POSIX_TYPE_SOCKET << POSIX_FILETYPE_SHIFT);\n+\t\t\tposix_info->fpinfo.Mode |= cpu_to_le32(POSIX_TYPE_SOCKET << POSIX_FILETYPE_SHIFT);\n \t\t}\n \n-\t\tposix_info->Inode = cpu_to_le64(ksmbd_kstat->kstat->ino);\n-\t\tposix_info->DosAttributes =\n+\t\tposix_info->fpinfo.Inode = cpu_to_le64(ksmbd_kstat->kstat->ino);\n+\t\tposix_info->fpinfo.DosAttributes =\n \t\t\tS_ISDIR(ksmbd_kstat->kstat->mode) ?\n \t\t\t\tFILE_ATTRIBUTE_DIRECTORY_LE : FILE_ATTRIBUTE_ARCHIVE_LE;\n \t\tif (d_info->hide_dot_file && d_info->name[0] == '.')\n-\t\t\tposix_info->DosAttributes |= FILE_ATTRIBUTE_HIDDEN_LE;\n+\t\t\tposix_info->fpinfo.DosAttributes |= FILE_ATTRIBUTE_HIDDEN_LE;\n \t\t/*\n \t\t * SidBuffer(32) contain two sids(Domain sid(16), UNIX group sid(16)).\n \t\t * UNIX sid(16) = revision(1) + num_subauth(1) + authority(6) +\n@@ -5276,45 +5276,45 @@ static int find_file_posix_info(struct smb2_query_info_rsp *rsp,\n \t\treturn ret;\n \n \tfile_info = (struct smb311_posix_qinfo *)rsp->Buffer;\n-\tfile_info->CreationTime = cpu_to_le64(fp->create_time);\n+\tfile_info->fpinfo.CreationTime = cpu_to_le64(fp->create_time);\n \ttime = ksmbd_UnixTimeToNT(stat.atime);\n-\tfile_info->LastAccessTime = cpu_to_le64(time);\n+\tfile_info->fpinfo.LastAccessTime = cpu_to_le64(time);\n \ttime = ksmbd_UnixTimeToNT(stat.mtime);\n-\tfile_info->LastWriteTime = cpu_to_le64(time);\n+\tfile_info->fpinfo.LastWriteTime = cpu_to_le64(time);\n \ttime = ksmbd_UnixTimeToNT(stat.ctime);\n-\tfile_info->ChangeTime = cpu_to_le64(time);\n-\tfile_info->DosAttributes = fp->f_ci->m_fattr;\n-\tfile_info->Inode = cpu_to_le64(stat.ino);\n+\tfile_info->fpinfo.ChangeTime = cpu_to_le64(time);\n+\tfile_info->fpinfo.DosAttributes = fp->f_ci->m_fattr;\n+\tfile_info->fpinfo.Inode = cpu_to_le64(stat.ino);\n \tif (ksmbd_stream_fd(fp) == false) {\n-\t\tfile_info->EndOfFile = cpu_to_le64(stat.size);\n-\t\tfile_info->AllocationSize = cpu_to_le64(stat.blocks << 9);\n+\t\tfile_info->fpinfo.EndOfFile = cpu_to_le64(stat.size);\n+\t\tfile_info->fpinfo.AllocationSize = cpu_to_le64(stat.blocks << 9);\n \t} else {\n-\t\tfile_info->EndOfFile = cpu_to_le64(fp->stream.size);\n-\t\tfile_info->AllocationSize = cpu_to_le64(fp->stream.size);\n+\t\tfile_info->fpinfo.EndOfFile = cpu_to_le64(fp->stream.size);\n+\t\tfile_info->fpinfo.AllocationSize = cpu_to_le64(fp->stream.size);\n \t}\n-\tfile_info->HardLinks = cpu_to_le32(stat.nlink);\n-\tfile_info->Mode = cpu_to_le32(stat.mode & 0777);\n+\tfile_info->fpinfo.HardLinks = cpu_to_le32(stat.nlink);\n+\tfile_info->fpinfo.Mode = cpu_to_le32(stat.mode & 0777);\n \tswitch (stat.mode & S_IFMT) {\n \tcase S_IFDIR:\n-\t\tfile_info->Mode |= cpu_to_le32(POSIX_TYPE_DIR << POSIX_FILETYPE_SHIFT);\n+\t\tfile_info->fpinfo.Mode |= cpu_to_le32(POSIX_TYPE_DIR << POSIX_FILETYPE_SHIFT);\n \t\tbreak;\n \tcase S_IFLNK:\n-\t\tfile_info->Mode |= cpu_to_le32(POSIX_TYPE_SYMLINK << POSIX_FILETYPE_SHIFT);\n+\t\tfile_info->fpinfo.Mode |= cpu_to_le32(POSIX_TYPE_SYMLINK << POSIX_FILETYPE_SHIFT);\n \t\tbreak;\n \tcase S_IFCHR:\n-\t\tfile_info->Mode |= cpu_to_le32(POSIX_TYPE_CHARDEV << POSIX_FILETYPE_SHIFT);\n+\t\tfile_info->fpinfo.Mode |= cpu_to_le32(POSIX_TYPE_CHARDEV << POSIX_FILETYPE_SHIFT);\n \t\tbreak;\n \tcase S_IFBLK:\n-\t\tfile_info->Mode |= cpu_to_le32(POSIX_TYPE_BLKDEV << POSIX_FILETYPE_SHIFT);\n+\t\tfile_info->fpinfo.Mode |= cpu_to_le32(POSIX_TYPE_BLKDEV << POSIX_FILETYPE_SHIFT);\n \t\tbreak;\n \tcase S_IFIFO:\n-\t\tfile_info->Mode |= cpu_to_le32(POSIX_TYPE_FIFO << POSIX_FILETYPE_SHIFT);\n+\t\tfile_info->fpinfo.Mode |= cpu_to_le32(POSIX_TYPE_FIFO << POSIX_FILETYPE_SHIFT);\n \t\tbreak;\n \tcase S_IFSOCK:\n-\t\tfile_info->Mode |= cpu_to_le32(POSIX_TYPE_SOCKET << POSIX_FILETYPE_SHIFT);\n+\t\tfile_info->fpinfo.Mode |= cpu_to_le32(POSIX_TYPE_SOCKET << POSIX_FILETYPE_SHIFT);\n \t}\n \n-\tfile_info->DeviceId = cpu_to_le32(stat.rdev);\n+\tfile_info->fpinfo.DeviceId = cpu_to_le32(stat.rdev);\n \n \t/*\n \t * Sids(32) contain two sids(Domain sid(16), UNIX group sid(16)).\ndiff --git a/fs/smb/server/smb2pdu.h b/fs/smb/server/smb2pdu.h\nindex dc6a81c64fd5..1eec48607666 100644\n--- a/fs/smb/server/smb2pdu.h\n+++ b/fs/smb/server/smb2pdu.h\n@@ -276,30 +276,11 @@ struct create_sd_buf_req {\n struct smb2_posix_info {\n \t__le32 NextEntryOffset;\n \t__u32 Ignored;\n-\t__le64 CreationTime;\n-\t__le64 LastAccessTime;\n-\t__le64 LastWriteTime;\n-\t__le64 ChangeTime;\n-\t__le64 EndOfFile;\n-\t__le64 AllocationSize;\n-\t__le32 DosAttributes;\n-\t__le64 Inode;\n-\t__le32 DeviceId;\n-\t__le32 Zero;\n-\t/* beginning of POSIX Create Context Response */\n-\t__le32 HardLinks;\n-\t__le32 ReparseTag;\n-\t__le32 Mode;\n+\tstruct file_posix_info fpinfo;\n \t/* SidBuffer contain two sids (UNIX user sid(16), UNIX group sid(16)) */\n \tu8 SidBuffer[32];\n \t__le32 name_len;\n \tu8 name[];\n-\t/*\n-\t * var sized owner SID\n-\t * var sized group SID\n-\t * le32 filenamelength\n-\t * u8  filename[]\n-\t */\n } __packed;\n \n /* functions */\n",
    "prefixes": [
        "v3",
        "5/5"
    ]
}