Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2197447/?format=api
{ "id": 2197447, "url": "http://patchwork.ozlabs.org/api/patches/2197447/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-ext4/patch/20260217214741.1928576-12-cel@kernel.org/", "project": { "id": 8, "url": "http://patchwork.ozlabs.org/api/projects/8/?format=api", "name": "Linux ext4 filesystem development", "link_name": "linux-ext4", "list_id": "linux-ext4.vger.kernel.org", "list_email": "linux-ext4@vger.kernel.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260217214741.1928576-12-cel@kernel.org>", "list_archive_url": null, "date": "2026-02-17T21:47:35", "name": "[v8,11/17] nfs: Implement fileattr_get for case sensitivity", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "2936fbd206e30418e376358fee08c257811a4384", "submitter": { "id": 86689, "url": "http://patchwork.ozlabs.org/api/people/86689/?format=api", "name": "Chuck Lever", "email": "cel@kernel.org" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linux-ext4/patch/20260217214741.1928576-12-cel@kernel.org/mbox/", "series": [ { "id": 492483, "url": "http://patchwork.ozlabs.org/api/series/492483/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-ext4/list/?series=492483", "date": "2026-02-17T21:47:25", "name": "Subject: Exposing case folding behavior", "version": 8, "mbox": "http://patchwork.ozlabs.org/series/492483/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2197447/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2197447/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <SRS0=a9i3=AV=vger.kernel.org=linux-ext4+bounces-13722-patchwork-incoming=ozlabs.org@ozlabs.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "linux-ext4@vger.kernel.org" ], "Delivered-To": [ "patchwork-incoming@legolas.ozlabs.org", "patchwork-incoming@ozlabs.org" ], "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=B7xPaydq;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=ozlabs.org\n (client-ip=2404:9400:2221:ea00::3; helo=mail.ozlabs.org;\n envelope-from=srs0=a9i3=av=vger.kernel.org=linux-ext4+bounces-13722-patchwork-incoming=ozlabs.org@ozlabs.org;\n receiver=patchwork.ozlabs.org)", "gandalf.ozlabs.org;\n arc=pass smtp.remote-ip=\"2600:3c0a:e001:db::12fc:5321\"\n arc.chain=subspace.kernel.org", "gandalf.ozlabs.org;\n dmarc=pass (p=quarantine dis=none) header.from=kernel.org", "gandalf.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=B7xPaydq;\n\tdkim-atps=neutral", "gandalf.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-ext4+bounces-13722-patchwork-incoming=ozlabs.org@vger.kernel.org;\n receiver=ozlabs.org)", "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=\"B7xPaydq\"", "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=10.30.226.201" ], "Received": [ "from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3])\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 4fFtg530t1z1xwC\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 18 Feb 2026 08:53:05 +1100 (AEDT)", "from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3])\n\tby gandalf.ozlabs.org (Postfix) with ESMTP id 4fFtg52Rzxz4wBF\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 18 Feb 2026 08:53:05 +1100 (AEDT)", "by gandalf.ozlabs.org (Postfix)\n\tid 4fFtg52Nztz4w9h; Wed, 18 Feb 2026 08:53:05 +1100 (AEDT)", "from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\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 gandalf.ozlabs.org (Postfix) with ESMTPS id 4fFtg16brkz4wDP\n\tfor <patchwork-incoming@ozlabs.org>; Wed, 18 Feb 2026 08:53:01 +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 3A8CC309D421\n\tfor <patchwork-incoming@ozlabs.org>; Tue, 17 Feb 2026 21:48:17 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 6CD982FBDF5;\n\tTue, 17 Feb 2026 21:48:14 +0000 (UTC)", "from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org\n [10.30.226.201])\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 2BA312F5308;\n\tTue, 17 Feb 2026 21:48:13 +0000 (UTC)", "by smtp.kernel.org (Postfix) with ESMTPSA id 8B8F6C19421;\n\tTue, 17 Feb 2026 21:48:11 +0000 (UTC)" ], "ARC-Seal": [ "i=2; a=rsa-sha256; d=ozlabs.org; s=201707; t=1771365185; cv=pass;\n\tb=Hlx/bKE2EMBWA8rzbgzkPgQx77Me+VdajLpwRkV9SmTAcgI6PTEyerZm4dhNnEjj4BghAlkRH00AqUyhml4glBHFrW7Gani2Rc2GTaXK4nwyylHHnk/oPm3B06PiIiBp6hhNDDOSBcoRlDN7AEjR/39J9l8cibnfuv3n9SILbjy7exjaSrmagGSHVHz+6uoMvDOiODWmATox++IRryOBFlVUZvToMNn4WXvIkttKqNhGu7yU7wQToNC+jMXpwkvvYDfiD1/xxka4EXnqdVFQtKSD3Fx9anpD9UnLCI5Tdal+JUJ63FJrDwHaBNGWH12192tho+3Jj1YlojIFyf9Xkw==", "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1771364894; cv=none;\n b=t3oDmK6tuAT9MR/2fMumDM+k3MKP7KPTqwkxP4pH7j0QfHSs+xVPt31dx5+haYsGbxnMKHYoIuo9K9FXNpYQjVn8uqzdwH7eXTcjcUdVVg88+aaH4OAwfTiOp7yNbzUuyF31XvLBUbcwPri3rYZB3vtxBT6qQrIqeguC/KzqzFM=" ], "ARC-Message-Signature": [ "i=2; a=rsa-sha256; d=ozlabs.org; s=201707;\n\tt=1771365185; c=relaxed/relaxed;\n\tbh=E5v7R0VZ+OYfEo0TR1ZgGaVV0kPHi6WeeHQhWAd3004=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version;\n b=tqjVi56iyEenVxsW5CpHrlWgRK5dWJfyEVGoVxyTKMbJgzc62NnmmUtMv7GYTIC6pWy+LyykANcUfyoQ16nlKYK9D7GQGbl7csnp5bHnHmqia17OeDxfG+TY97sOwZssPqD1Vb5mtYsD5SdQ71KThfLPejTwI+aaCEBHM+65+RQFp+rDEbtW4s9UvbbDsrIjyMPtgYLhSXhJ+Y1V5FGsN6Qmj4E/xai6iKb4Yx892xaK/eL6HxI/gigNZC5EzqA7HXPwmNH9Bfh+hRCh0ausyvLOea1lIKPZ3MaeBl1TYJaLHArlkxC4iCtFnVe58NUFeybL13jvo+GoKk4leXiQsQ==", "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1771364894; c=relaxed/simple;\n\tbh=IaTLs8c1EYz1WAGi5wSdY1dzOmkfrjp5BnXuONjmf7Q=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version;\n b=OcvmKW3LXNRSzvOk8YYVZqdt3UbeOVy6rvru52kz388Bixz2mPY1sCaAGxGzxjsWlCFdLrl/kZ/q3ucXIMkvbu+W5k6chJRSDf7Tk004CwblwJ+7F5AnVvIaEZ1Err76X2U9RgezQc8X2ovDrbu24zxc2IoVwFShPzAx6q6Ck9k=" ], "ARC-Authentication-Results": [ "i=2; gandalf.ozlabs.org;\n dmarc=pass (p=quarantine dis=none) header.from=kernel.org;\n dkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=B7xPaydq; dkim-atps=neutral;\n spf=pass (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-ext4+bounces-13722-patchwork-incoming=ozlabs.org@vger.kernel.org;\n receiver=ozlabs.org) smtp.mailfrom=vger.kernel.org", "i=1; smtp.subspace.kernel.org;\n dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=B7xPaydq; arc=none smtp.client-ip=10.30.226.201" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1771364893;\n\tbh=IaTLs8c1EYz1WAGi5wSdY1dzOmkfrjp5BnXuONjmf7Q=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=B7xPaydqN1xajXWWY7MpW2foBvG6uY3o1mRwMMP9LL4grCQQMhPZZI3XEDokTGtGq\n\t g7wb+gj7ykWMsiPG3Gu5ZxNnHfeSMnLmHnTdwE9gT5mPWj5QkDbDXeEyDWntBbouWi\n\t vXGwFFvIEdY4171ZSW+Xk0P2bJu3xy8l3pPmNk9hAyXgEU47KAicMqLO1JDwEsWw2t\n\t ilDmzOEebI8vLh+cJxm6kr7xU2YlJEhPqLMevABBrxaQXJ/TtwSTS/rgSgopBDL3ht\n\t 0CmBbEAdZp3S6ISGL+v6vJBiy12nIth12Llr3ouwNDIwPCdScM0RitVchC/Tz7XzC0\n\t 9pcKaqUhxL7Jg==", "From": "Chuck Lever <cel@kernel.org>", "To": "Al Viro <viro@zeniv.linux.org.uk>,\n\tChristian Brauner <brauner@kernel.org>,\n\tJan Kara <jack@suse.cz>", "Cc": "linux-fsdevel@vger.kernel.org,\n\tlinux-ext4@vger.kernel.org,\n\tlinux-xfs@vger.kernel.org,\n\tlinux-cifs@vger.kernel.org,\n\tlinux-nfs@vger.kernel.org,\n\tlinux-api@vger.kernel.org,\n\tlinux-f2fs-devel@lists.sourceforge.net,\n\thirofumi@mail.parknet.co.jp,\n\tlinkinjeon@kernel.org,\n\tsj1557.seo@samsung.com,\n\tyuezhang.mo@sony.com,\n\talmaz.alexandrovich@paragon-software.com,\n\tslava@dubeyko.com,\n\tglaubitz@physik.fu-berlin.de,\n\tfrank.li@vivo.com,\n\ttytso@mit.edu,\n\tadilger.kernel@dilger.ca,\n\tcem@kernel.org,\n\tsfrench@samba.org,\n\tpc@manguebit.org,\n\tronniesahlberg@gmail.com,\n\tsprasad@microsoft.com,\n\ttrondmy@kernel.org,\n\tanna@kernel.org,\n\tjaegeuk@kernel.org,\n\tchao@kernel.org,\n\thansg@kernel.org,\n\tsenozhatsky@chromium.org,\n\tChuck Lever <chuck.lever@oracle.com>", "Subject": "[PATCH v8 11/17] nfs: Implement fileattr_get for case sensitivity", "Date": "Tue, 17 Feb 2026 16:47:35 -0500", "Message-ID": "<20260217214741.1928576-12-cel@kernel.org>", "X-Mailer": "git-send-email 2.53.0", "In-Reply-To": "<20260217214741.1928576-1-cel@kernel.org>", "References": "<20260217214741.1928576-1-cel@kernel.org>", "Precedence": "bulk", "X-Mailing-List": "linux-ext4@vger.kernel.org", "List-Id": "<linux-ext4.vger.kernel.org>", "List-Subscribe": "<mailto:linux-ext4+subscribe@vger.kernel.org>", "List-Unsubscribe": "<mailto:linux-ext4+unsubscribe@vger.kernel.org>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-Spam-Status": "No, score=-1.2 required=5.0 tests=ARC_SIGNED,ARC_VALID,\n\tDKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DMARC_PASS,\n\tMAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=disabled\n\tversion=4.0.1", "X-Spam-Checker-Version": "SpamAssassin 4.0.1 (2024-03-25) on gandalf.ozlabs.org" }, "content": "From: Chuck Lever <chuck.lever@oracle.com>\n\nAn NFS server re-exporting an NFS mount point needs to report the\ncase sensitivity behavior of the underlying filesystem to its\nclients. Without this, re-export servers cannot accurately convey\ncase handling semantics, potentially causing client applications to\nmake incorrect assumptions about filename collisions and lookups.\n\nThe NFS client already retrieves case sensitivity information from\nservers during mount via PATHCONF (NFSv3) or the\nFATTR4_CASE_INSENSITIVE/FATTR4_CASE_PRESERVING attributes (NFSv4).\nExpose this information through fileattr_get by reporting the\nFS_XFLAG_CASEFOLD and FS_XFLAG_CASENONPRESERVING flags. NFSv2 lacks\nPATHCONF support, so mounts using that protocol version default to\nstandard POSIX behavior: case-sensitive and case-preserving.\n\nSigned-off-by: Chuck Lever <chuck.lever@oracle.com>\n---\n fs/nfs/client.c | 9 +++++++--\n fs/nfs/inode.c | 20 ++++++++++++++++++++\n fs/nfs/internal.h | 3 +++\n fs/nfs/nfs3proc.c | 2 ++\n fs/nfs/nfs3xdr.c | 7 +++++--\n fs/nfs/nfs4proc.c | 2 ++\n fs/nfs/proc.c | 3 +++\n fs/nfs/symlink.c | 3 +++\n include/linux/nfs_xdr.h | 2 ++\n 9 files changed, 47 insertions(+), 4 deletions(-)", "diff": "diff --git a/fs/nfs/client.c b/fs/nfs/client.c\nindex fd15731cf361..0410f6053bfd 100644\n--- a/fs/nfs/client.c\n+++ b/fs/nfs/client.c\n@@ -935,13 +935,18 @@ static int nfs_probe_fsinfo(struct nfs_server *server, struct nfs_fh *mntfh, str\n \n \t/* Get some general file system info */\n \tif (server->namelen == 0) {\n-\t\tstruct nfs_pathconf pathinfo;\n+\t\tstruct nfs_pathconf pathinfo = { };\n \n \t\tpathinfo.fattr = fattr;\n \t\tnfs_fattr_init(fattr);\n \n-\t\tif (clp->rpc_ops->pathconf(server, mntfh, &pathinfo) >= 0)\n+\t\tif (clp->rpc_ops->pathconf(server, mntfh, &pathinfo) >= 0) {\n \t\t\tserver->namelen = pathinfo.max_namelen;\n+\t\t\tif (pathinfo.case_insensitive)\n+\t\t\t\tserver->caps |= NFS_CAP_CASE_INSENSITIVE;\n+\t\t\tif (pathinfo.case_preserving)\n+\t\t\t\tserver->caps |= NFS_CAP_CASE_PRESERVING;\n+\t\t}\n \t}\n \n \tif (clp->rpc_ops->discover_trunking != NULL &&\ndiff --git a/fs/nfs/inode.c b/fs/nfs/inode.c\nindex 331cdecdd966..8a2edce22a53 100644\n--- a/fs/nfs/inode.c\n+++ b/fs/nfs/inode.c\n@@ -41,6 +41,7 @@\n #include <linux/freezer.h>\n #include <linux/uaccess.h>\n #include <linux/iversion.h>\n+#include <linux/fileattr.h>\n \n #include \"nfs4_fs.h\"\n #include \"callback.h\"\n@@ -1101,6 +1102,25 @@ int nfs_getattr(struct mnt_idmap *idmap, const struct path *path,\n }\n EXPORT_SYMBOL_GPL(nfs_getattr);\n \n+/**\n+ * nfs_fileattr_get - Retrieve file attributes\n+ * @dentry: object to query\n+ * @fa: file attributes to fill in\n+ *\n+ * Return: 0 on success\n+ */\n+int nfs_fileattr_get(struct dentry *dentry, struct file_kattr *fa)\n+{\n+\tstruct inode *inode = d_inode(dentry);\n+\n+\tif (nfs_server_capable(inode, NFS_CAP_CASE_INSENSITIVE))\n+\t\tfa->fsx_xflags |= FS_XFLAG_CASEFOLD;\n+\tif (!nfs_server_capable(inode, NFS_CAP_CASE_PRESERVING))\n+\t\tfa->fsx_xflags |= FS_XFLAG_CASENONPRESERVING;\n+\treturn 0;\n+}\n+EXPORT_SYMBOL_GPL(nfs_fileattr_get);\n+\n static void nfs_init_lock_context(struct nfs_lock_context *l_ctx)\n {\n \trefcount_set(&l_ctx->count, 1);\ndiff --git a/fs/nfs/internal.h b/fs/nfs/internal.h\nindex 63e09dfc27a8..e29695d4b7ed 100644\n--- a/fs/nfs/internal.h\n+++ b/fs/nfs/internal.h\n@@ -449,6 +449,9 @@ extern void nfs_set_cache_invalid(struct inode *inode, unsigned long flags);\n extern bool nfs_check_cache_invalid(struct inode *, unsigned long);\n extern int nfs_wait_bit_killable(struct wait_bit_key *key, int mode);\n \n+struct file_kattr;\n+int nfs_fileattr_get(struct dentry *dentry, struct file_kattr *fa);\n+\n #if IS_ENABLED(CONFIG_NFS_LOCALIO)\n /* localio.c */\n struct nfs_local_dio {\ndiff --git a/fs/nfs/nfs3proc.c b/fs/nfs/nfs3proc.c\nindex d3d2fbeba89d..c30c8c6b1b9e 100644\n--- a/fs/nfs/nfs3proc.c\n+++ b/fs/nfs/nfs3proc.c\n@@ -1047,6 +1047,7 @@ static const struct inode_operations nfs3_dir_inode_operations = {\n \t.permission\t= nfs_permission,\n \t.getattr\t= nfs_getattr,\n \t.setattr\t= nfs_setattr,\n+\t.fileattr_get\t= nfs_fileattr_get,\n #ifdef CONFIG_NFS_V3_ACL\n \t.listxattr\t= nfs3_listxattr,\n \t.get_inode_acl\t= nfs3_get_acl,\n@@ -1058,6 +1059,7 @@ static const struct inode_operations nfs3_file_inode_operations = {\n \t.permission\t= nfs_permission,\n \t.getattr\t= nfs_getattr,\n \t.setattr\t= nfs_setattr,\n+\t.fileattr_get\t= nfs_fileattr_get,\n #ifdef CONFIG_NFS_V3_ACL\n \t.listxattr\t= nfs3_listxattr,\n \t.get_inode_acl\t= nfs3_get_acl,\ndiff --git a/fs/nfs/nfs3xdr.c b/fs/nfs/nfs3xdr.c\nindex e17d72908412..e745e78faab0 100644\n--- a/fs/nfs/nfs3xdr.c\n+++ b/fs/nfs/nfs3xdr.c\n@@ -2276,8 +2276,11 @@ static int decode_pathconf3resok(struct xdr_stream *xdr,\n \tif (unlikely(!p))\n \t\treturn -EIO;\n \tresult->max_link = be32_to_cpup(p++);\n-\tresult->max_namelen = be32_to_cpup(p);\n-\t/* ignore remaining fields */\n+\tresult->max_namelen = be32_to_cpup(p++);\n+\tp++;\t/* ignore no_trunc */\n+\tp++;\t/* ignore chown_restricted */\n+\tresult->case_insensitive = be32_to_cpup(p++) != 0;\n+\tresult->case_preserving = be32_to_cpup(p) != 0;\n \treturn 0;\n }\n \ndiff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c\nindex 180229320731..c9ab542bdb90 100644\n--- a/fs/nfs/nfs4proc.c\n+++ b/fs/nfs/nfs4proc.c\n@@ -10598,6 +10598,7 @@ static const struct inode_operations nfs4_dir_inode_operations = {\n \t.getattr\t= nfs_getattr,\n \t.setattr\t= nfs_setattr,\n \t.listxattr\t= nfs4_listxattr,\n+\t.fileattr_get\t= nfs_fileattr_get,\n };\n \n static const struct inode_operations nfs4_file_inode_operations = {\n@@ -10605,6 +10606,7 @@ static const struct inode_operations nfs4_file_inode_operations = {\n \t.getattr\t= nfs_getattr,\n \t.setattr\t= nfs_setattr,\n \t.listxattr\t= nfs4_listxattr,\n+\t.fileattr_get\t= nfs_fileattr_get,\n };\n \n static struct nfs_server *nfs4_clone_server(struct nfs_server *source,\ndiff --git a/fs/nfs/proc.c b/fs/nfs/proc.c\nindex 0e440ebf5335..a92c0ea26ea0 100644\n--- a/fs/nfs/proc.c\n+++ b/fs/nfs/proc.c\n@@ -597,6 +597,7 @@ nfs_proc_pathconf(struct nfs_server *server, struct nfs_fh *fhandle,\n {\n \tinfo->max_link = 0;\n \tinfo->max_namelen = NFS2_MAXNAMLEN;\n+\tinfo->case_preserving = true;\n \treturn 0;\n }\n \n@@ -717,12 +718,14 @@ static const struct inode_operations nfs_dir_inode_operations = {\n \t.permission\t= nfs_permission,\n \t.getattr\t= nfs_getattr,\n \t.setattr\t= nfs_setattr,\n+\t.fileattr_get\t= nfs_fileattr_get,\n };\n \n static const struct inode_operations nfs_file_inode_operations = {\n \t.permission\t= nfs_permission,\n \t.getattr\t= nfs_getattr,\n \t.setattr\t= nfs_setattr,\n+\t.fileattr_get\t= nfs_fileattr_get,\n };\n \n const struct nfs_rpc_ops nfs_v2_clientops = {\ndiff --git a/fs/nfs/symlink.c b/fs/nfs/symlink.c\nindex 58146e935402..74a072896f8d 100644\n--- a/fs/nfs/symlink.c\n+++ b/fs/nfs/symlink.c\n@@ -22,6 +22,8 @@\n #include <linux/mm.h>\n #include <linux/string.h>\n \n+#include \"internal.h\"\n+\n /* Symlink caching in the page cache is even more simplistic\n * and straight-forward than readdir caching.\n */\n@@ -74,4 +76,5 @@ const struct inode_operations nfs_symlink_inode_operations = {\n \t.get_link\t= nfs_get_link,\n \t.getattr\t= nfs_getattr,\n \t.setattr\t= nfs_setattr,\n+\t.fileattr_get\t= nfs_fileattr_get,\n };\ndiff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h\nindex ff1f12aa73d2..7c2057e40f99 100644\n--- a/include/linux/nfs_xdr.h\n+++ b/include/linux/nfs_xdr.h\n@@ -182,6 +182,8 @@ struct nfs_pathconf {\n \tstruct nfs_fattr\t*fattr; /* Post-op attributes */\n \t__u32\t\t\tmax_link; /* max # of hard links */\n \t__u32\t\t\tmax_namelen; /* max name length */\n+\tbool\t\t\tcase_insensitive;\n+\tbool\t\t\tcase_preserving;\n };\n \n struct nfs4_change_info {\n", "prefixes": [ "v8", "11/17" ] }