{"id":2196720,"url":"http://patchwork.ozlabs.org/api/1.0/patches/2196720/?format=json","project":{"id":12,"url":"http://patchwork.ozlabs.org/api/1.0/projects/12/?format=json","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-5-zhang.guodong@linux.dev>","date":"2026-02-16T08:20:17","name":"[v3,4/5] smb: introduce struct create_posix_ctxt_rsp","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"5d8284e26331dcee400a2511265ef9a56f8efddf","submitter":{"id":92649,"url":"http://patchwork.ozlabs.org/api/1.0/people/92649/?format=json","name":"ZhangGuoDong","email":"zhang.guodong@linux.dev"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-cifs-client/patch/20260216082018.156695-5-zhang.guodong@linux.dev/mbox/","series":[{"id":492258,"url":"http://patchwork.ozlabs.org/api/1.0/series/492258/?format=json","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/2196720/checks/","tags":{},"headers":{"Return-Path":"\n <linux-cifs+bounces-9394-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=DElCpLpi;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.234.253.10; helo=sea.lore.kernel.org;\n envelope-from=linux-cifs+bounces-9394-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=\"DElCpLpi\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=95.215.58.174","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 sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fDwk62yf4z1xpY\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 16 Feb 2026 19:22:22 +1100 (AEDT)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 99D58300DF77\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 16 Feb 2026 08:22:00 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 0A5512475CB;\n\tMon, 16 Feb 2026 08:22:00 +0000 (UTC)","from out-174.mta1.migadu.com (out-174.mta1.migadu.com\n [95.215.58.174])\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 454BA2475E3\n\tfor <linux-cifs@vger.kernel.org>; Mon, 16 Feb 2026 08:21:58 +0000 (UTC)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1771230119; cv=none;\n b=MlzFq9T2b8fBEgMdr26pueVpd7HjKzhfUUhce/AgPNI9Gxr4Z2/2wPl/pgx1PDkWJYmzKO/oVoQHFXVRJmIEnH48DpAVhYhrUU2qe7ybb/gzWWG+ZWaLffdqP2Fbht0LKFd0p6opn3DWhessTqplZ4efmJcJDoU37qiRSaKrtog=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1771230119; c=relaxed/simple;\n\tbh=eCldrpBXQp6njAP9c8ZuhtY5Bi+3mjdEcuI2P2dCDJk=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version;\n b=hYOva99MXiBttZeRegQLgFATA5qVLih1o4ja2EAKqbWtPdIbOLzR90D4L3v+dz/G9FQBOUIuNYRT7vt5QEytbduCTEFS++Dsop50S+XloGXP2bpafCYM86VCcGMMmYFCAhwnAimPBWXQ9QMjNz1Iq5afktT1hCKjxnsC8+b8stA=","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=DElCpLpi; arc=none smtp.client-ip=95.215.58.174","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=1771230116;\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=cGD6Fwa5FXXdMutZOTH3i3I30gO3MAWtW/aTRUY1924=;\n\tb=DElCpLpiNdlf/FB+8EjdQauhenroYFY3q0UIYRzeJvwhiUL5RhrPeScJodTXuzM5Y0xAB9\n\tgNP+4QAiStoEaAqFKxEF9i7lLRusVhPcgfZBWttxja0EfyruO+WoDUXZg2CwC0SoyD0O02\n\tY6CdkBIPRjG+2YVhY9ym2QBo7bSCrS8=","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 4/5] smb: introduce struct create_posix_ctxt_rsp","Date":"Mon, 16 Feb 2026 08:20:17 +0000","Message-ID":"<20260216082018.156695-5-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 create_posix_ctxt_rsp\n  - some fields in \"struct create_posix_rsp\" -> \"struct create_posix_ctxt_rsp\"\n  - create_posix_rsp_buf(): offsetof(..., nlink) -> offsetof(..., ctxt_rsp)\n\nSigned-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn>\nSigned-off-by: ZhangGuoDong <zhangguodong@kylinos.cn>\n---\n fs/smb/client/smb2pdu.c |  9 +++++----\n fs/smb/client/smb2pdu.h |  6 ++----\n fs/smb/common/smb2pdu.h | 17 +++++++++++++++++\n fs/smb/server/oplock.c  |  8 ++++----\n fs/smb/server/smb2pdu.h |  6 ++----\n 5 files changed, 30 insertions(+), 16 deletions(-)","diff":"diff --git a/fs/smb/client/smb2pdu.c b/fs/smb/client/smb2pdu.c\nindex 7f3edf42b9c3..f8825160355d 100644\n--- a/fs/smb/client/smb2pdu.c\n+++ b/fs/smb/client/smb2pdu.c\n@@ -2362,9 +2362,9 @@ parse_posix_ctxt(struct create_context *cc, struct smb2_file_all_info *info,\n \n \tmemset(posix, 0, sizeof(*posix));\n \n-\tposix->nlink = le32_to_cpu(*(__le32 *)(beg + 0));\n-\tposix->reparse_tag = le32_to_cpu(*(__le32 *)(beg + 4));\n-\tposix->mode = le32_to_cpu(*(__le32 *)(beg + 8));\n+\tposix->ctxt_rsp.nlink = le32_to_cpu(*(__le32 *)(beg + 0));\n+\tposix->ctxt_rsp.reparse_tag = le32_to_cpu(*(__le32 *)(beg + 4));\n+\tposix->ctxt_rsp.mode = le32_to_cpu(*(__le32 *)(beg + 8));\n \n \tsid = beg + 12;\n \tsid_len = posix_info_sid_size(sid, end);\n@@ -2383,7 +2383,8 @@ parse_posix_ctxt(struct create_context *cc, struct smb2_file_all_info *info,\n \tmemcpy(&posix->group, sid, sid_len);\n \n \tcifs_dbg(FYI, \"nlink=%d mode=%o reparse_tag=%x\\n\",\n-\t\t posix->nlink, posix->mode, posix->reparse_tag);\n+\t\t posix->ctxt_rsp.nlink, posix->ctxt_rsp.mode,\n+\t\t posix->ctxt_rsp.reparse_tag);\n }\n \n int smb2_parse_contexts(struct TCP_Server_Info *server,\ndiff --git a/fs/smb/client/smb2pdu.h b/fs/smb/client/smb2pdu.h\nindex 78bb99f29d38..4928fb620233 100644\n--- a/fs/smb/client/smb2pdu.h\n+++ b/fs/smb/client/smb2pdu.h\n@@ -251,11 +251,9 @@ struct smb2_file_id_extd_directory_info {\n \n extern char smb2_padding[7];\n \n-/* equivalent of the contents of SMB3.1.1 POSIX open context response */\n+/* See POSIX-SMB2 2.2.14.2.16 */\n struct create_posix_rsp {\n-\tu32 nlink;\n-\tu32 reparse_tag;\n-\tu32 mode;\n+\tstruct create_posix_ctxt_rsp ctxt_rsp;\n \tstruct smb_sid owner; /* var-sized on the wire */\n \tstruct smb_sid group; /* var-sized on the wire */\n } __packed;\ndiff --git a/fs/smb/common/smb2pdu.h b/fs/smb/common/smb2pdu.h\nindex 85a4248d4f29..5dd4ab245453 100644\n--- a/fs/smb/common/smb2pdu.h\n+++ b/fs/smb/common/smb2pdu.h\n@@ -1775,4 +1775,21 @@ struct smb2_lease_ack {\n #define SET_MINIMUM_RIGHTS (FILE_READ_EA | FILE_READ_ATTRIBUTES \\\n \t\t\t\t| READ_CONTROL | SYNCHRONIZE)\n \n+/*\n+ * [POSIX-SMB2] SMB3 POSIX Extensions\n+ * Link: https://gitlab.com/samba-team/smb3-posix-spec/-/blob/master/smb3_posix_extensions.md\n+ */\n+\n+/*\n+ * SMB2_CREATE_POSIX_CONTEXT Response\n+ * See POSIX-SMB2 2.2.14.2.16\n+ */\n+struct create_posix_ctxt_rsp {\n+\t__le32 nlink;\n+\t__le32 reparse_tag;\n+\t__le32 mode;\n+\t// var sized owner SID\n+\t// var sized group SID\n+} __packed;\n+\n #endif\t\t\t\t/* _COMMON_SMB2PDU_H */\ndiff --git a/fs/smb/server/oplock.c b/fs/smb/server/oplock.c\nindex a5967ac46604..171758ed94b2 100644\n--- a/fs/smb/server/oplock.c\n+++ b/fs/smb/server/oplock.c\n@@ -1703,7 +1703,7 @@ void create_posix_rsp_buf(char *cc, struct ksmbd_file *fp)\n \tbuf = (struct create_posix_rsp *)cc;\n \tmemset(buf, 0, sizeof(struct create_posix_rsp));\n \tbuf->ccontext.DataOffset = cpu_to_le16(offsetof\n-\t\t\t(struct create_posix_rsp, nlink));\n+\t\t\t(struct create_posix_rsp, ctxt_rsp));\n \t/*\n \t * DataLength = nlink(4) + reparse_tag(4) + mode(4) +\n \t * domain sid(28) + unix group sid(16).\n@@ -1730,9 +1730,9 @@ void create_posix_rsp_buf(char *cc, struct ksmbd_file *fp)\n \tbuf->Name[14] = 0xCD;\n \tbuf->Name[15] = 0x7C;\n \n-\tbuf->nlink = cpu_to_le32(inode->i_nlink);\n-\tbuf->reparse_tag = cpu_to_le32(fp->volatile_id);\n-\tbuf->mode = cpu_to_le32(inode->i_mode & 0777);\n+\tbuf->ctxt_rsp.nlink = cpu_to_le32(inode->i_nlink);\n+\tbuf->ctxt_rsp.reparse_tag = cpu_to_le32(fp->volatile_id);\n+\tbuf->ctxt_rsp.mode = cpu_to_le32(inode->i_mode & 0777);\n \t/*\n \t * SidBuffer(44) contain two sids(Domain sid(28), UNIX group sid(16)).\n \t * Domain sid(28) = revision(1) + num_subauth(1) + authority(6) +\ndiff --git a/fs/smb/server/smb2pdu.h b/fs/smb/server/smb2pdu.h\nindex 9b3c4c9acb11..dc6a81c64fd5 100644\n--- a/fs/smb/server/smb2pdu.h\n+++ b/fs/smb/server/smb2pdu.h\n@@ -83,13 +83,11 @@ struct create_durable_rsp {\n \t} Data;\n } __packed;\n \n-/* equivalent of the contents of SMB3.1.1 POSIX open context response */\n+/* See POSIX-SMB2 2.2.14.2.16 */\n struct create_posix_rsp {\n \tstruct create_context_hdr ccontext;\n \t__u8    Name[16];\n-\t__le32 nlink;\n-\t__le32 reparse_tag;\n-\t__le32 mode;\n+\tstruct create_posix_ctxt_rsp ctxt_rsp;\n \t/* SidBuffer contain two sids(Domain sid(28), UNIX group sid(16)) */\n \tu8 SidBuffer[44];\n } __packed;\n","prefixes":["v3","4/5"]}