From nobody Sun Feb 8 05:59:57 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B9CEA357713; Thu, 22 Jan 2026 18:59:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769108365; cv=none; b=QPa3dQfD2uaGKEId3Urjf0EpX9R0H+govm1LMVC6OKJFcwT1W7rDCOOCUaBQH3M57NXuXDk5SmP7gKjuZgshjVN1kNPAgmNJQPcqwncCmaizSKc2uVBmq+nkZsXbVFhNgjx7KFmsQIGYIe3bHKV89zlN5hnG7vsFR7AJYI5UgNw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769108365; c=relaxed/simple; bh=/tek0OLjqC1l+O5Xw/JrC06UDsQIel58UyGJqqU/ELg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=faw6SYHp9JKoy4Wk7oLlJNj3iVvaoYnYEq9w8Ku+kwRMrdj5tJ7UPKJw7ki2TXvjBaumC+Guay/hBUGZuHqIXkLTYuC8X+6E5HIJOjcyY8ytFyA/zHE/9Xy8dANJgSZkg8pM5JSy81yDb34dlmYSfGnQGGtpTD9bx+Q8tTYuiqk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BisUomAz; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="BisUomAz" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5D7E5C19424; Thu, 22 Jan 2026 18:59:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1769108364; bh=/tek0OLjqC1l+O5Xw/JrC06UDsQIel58UyGJqqU/ELg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=BisUomAzdgZQKz47kedt4erqhYdRAlxqFps4RnebMuDNHf7HinErISOudmsz/6IDD MyReZ/Ws7ALzsArPKK2Y8rf8jxgESH94WYVoEEfsTwEpRsBe3s8eSitep6TlQUKc2g JRvXFZKRXqvflC2ZITdrNUKKsYNZVAEjdRRIjpTG+Y/Lr7DDyORhfNwdl5uEXV2O+9 kjzkrb3uMBbtLfDVEujzTqoTDF7/fUM08SI6Ksnd6FWMARclemd/wsowbbaedtglmJ cLAqTRviHcQC1gUxKNBA+UW1Q47tAF+pTtqJlCPlz6EN5tAvt+ReibsyYFGs9k6S4A wEZ8KJuqEKX2g== From: Jeff Layton Date: Thu, 22 Jan 2026 13:59:15 -0500 Subject: [PATCH 1/2] nfsd: add a runtime switch for disabling delegated timestamps Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260122-delegts-v1-1-40fbb180556c@kernel.org> References: <20260122-delegts-v1-0-40fbb180556c@kernel.org> In-Reply-To: <20260122-delegts-v1-0-40fbb180556c@kernel.org> To: Chuck Lever , NeilBrown , Olga Kornievskaia , Dai Ngo , Tom Talpey Cc: linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2390; i=jlayton@kernel.org; h=from:subject:message-id; bh=/tek0OLjqC1l+O5Xw/JrC06UDsQIel58UyGJqqU/ELg=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBpcnOJ3toduxQIVewFces5HAaCyt3Jsi7XNkGgl a4wRsgdm06JAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaXJziQAKCRAADmhBGVaC FaRNEADAkaFU+I10xqcAtBEedVOAWDvSU9IMKFwkGcCZSsWKmftEk95Wk+F7KFQ+Q2CguVlN5od jWqLGRXrl3yREPJKjwp6jj9ISl7211EhVF9Bjp63Az/Q5MwvXgeRi628Q2L60IQNr3ttaU63dzB kpx21LggYn2asDxaKJDX+IX1lhet+OxkdGk13VvoYfCVGEp+a5zN9YFyY47mumhHKWYo1T4B81e Lab/JafpPZ0c/UQW5MLBPZuj3HBv4U0hQ3RE2HH51AupWVG+s08y79llakgqApdGRb4o9MP21v2 T4Svo8e7mvrKS5y3ua/k6iNHzeZ6qA3TRCyzjUQmC9rwmVv3qv+LMg40IEXPbo/jv4q6855lyUk OD1AviAVD/b4NO35pS5WBmAWF1Gmxh4Fax1hCtkrxL2cXloJk5Mfpp3C1fB+a9HB+ugxH6osXSH 80unfzgT5HoL64ByhTZGCp/90XEz4eU/CdRxlQtHGjumGi4np2CM//1kpzTR1dpVrhrResQxLxl RVQjVs5K4Ep6qJq74khAyk/CtSg///uAvm6iPHGFQS/GWv9I7RPb2hJcyITIJAMYgVJnBetZncu lWucMOS4EXClmKFqmJDD2NsiSYlw9qak2geGHEFF9jNR6aZV93uy6IkJTrdassIhj6lp79J/+Qj sG0XGChHr8uAGhA== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 The delegated timestamp code seems to be working well enough now that we want to make it always be built in. In the event that there are problems though, we still want to be able to disable them for debugging purposes. Add a switch to debugfs to enable them at runtime. Signed-off-by: Jeff Layton --- fs/nfsd/debugfs.c | 3 +++ fs/nfsd/nfs4state.c | 4 ++++ fs/nfsd/nfsd.h | 1 + 3 files changed, 8 insertions(+) diff --git a/fs/nfsd/debugfs.c b/fs/nfsd/debugfs.c index 7f44689e0a53edbfd6ade9dda6af4052976a65d3..d113e0e19c8d73fc9e023fd30ed= 3bc909dc5ddbd 100644 --- a/fs/nfsd/debugfs.c +++ b/fs/nfsd/debugfs.c @@ -140,4 +140,7 @@ void nfsd_debugfs_init(void) =20 debugfs_create_file("io_cache_write", 0644, nfsd_top_dir, NULL, &nfsd_io_cache_write_fops); + + debugfs_create_bool("delegated_timestamps", 0644, nfsd_top_dir, + &nfsd_delegts_enabled); } diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 583c13b5aaf3cd12a87c7aae62fe6a8223368f55..95f2e87141a7ab5dd3da6741859= bdcae28a8c6c0 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -76,6 +76,8 @@ static const stateid_t close_stateid =3D { =20 static u64 current_sessionid =3D 1; =20 +bool nfsd_delegts_enabled __read_mostly =3D true; + #define ZERO_STATEID(stateid) (!memcmp((stateid), &zero_stateid, sizeof(st= ateid_t))) #define ONE_STATEID(stateid) (!memcmp((stateid), &one_stateid, sizeof(sta= teid_t))) #define CURRENT_STATEID(stateid) (!memcmp((stateid), ¤tstateid, size= of(stateid_t))) @@ -6048,6 +6050,8 @@ nfsd4_verify_setuid_write(struct nfsd4_open *open, st= ruct nfsd_file *nf) #ifdef CONFIG_NFSD_V4_DELEG_TIMESTAMPS static bool nfsd4_want_deleg_timestamps(const struct nfsd4_open *open) { + if (!nfsd_delegts_enabled) + return false; return open->op_deleg_want & OPEN4_SHARE_ACCESS_WANT_DELEG_TIMESTAMPS; } #else /* CONFIG_NFSD_V4_DELEG_TIMESTAMPS */ diff --git a/fs/nfsd/nfsd.h b/fs/nfsd/nfsd.h index a2e35a4fa105380c2d99cb0865003e0f7f4a8e8d..7c009f07c90b50d7074695d4665= a2eca85140eda 100644 --- a/fs/nfsd/nfsd.h +++ b/fs/nfsd/nfsd.h @@ -160,6 +160,7 @@ static inline void nfsd_debugfs_exit(void) {} #endif =20 extern bool nfsd_disable_splice_read __read_mostly; +extern bool nfsd_delegts_enabled __read_mostly; =20 enum { /* Any new NFSD_IO enum value must be added at the end */ --=20 2.52.0 From nobody Sun Feb 8 05:59:57 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B944E2FD69F; Thu, 22 Jan 2026 18:59:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769108365; cv=none; b=tOs1SDlPuc3obu9yKURv9fA6rodHOFxrnteusqLu/HMGD3ng5zemMWfMX+zL+lmigA24O08p1to3BVxFlJYyJjs8MlceHdTjkZMRuv14CTMH6jiuu91ls/qykRd1bhgcXzY/0ClvtmpJDu60VdqipelqidIAR++f9letgOQ2AFc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769108365; c=relaxed/simple; bh=eHrRDbXulGw1DGJlTJrcvKl0Qy2dxyb4zrCEW8M0DmA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OshP9Tib8SNfQmkggYjjtTgQA5RbwQwjViVCkOvxvykmZOfCUV3gsVmS4IHDf4ierCWL2XKPJV0G9A3sdUgLfUp0INVKtbp73xrAvewD+gWW2uureKSSnWf2dXkDFmdkLa2/ZzOF6agLWLsWuzs7pj1ZEYGe29ojkSoYCWpY7eI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gzevswLG; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="gzevswLG" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 59A63C19425; Thu, 22 Jan 2026 18:59:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1769108365; bh=eHrRDbXulGw1DGJlTJrcvKl0Qy2dxyb4zrCEW8M0DmA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=gzevswLGp16QUrW8zYDxOzpOewrp1GfGndUNwbn2lzLDPOLfnH95QSurC1OpQNDk6 H7EHOg9XjNd82qRv7jj282H62gmxbv9Yo6y7b0CKWZ9qqIvaWR/gJwIIe3n5FjWmSt M84MnQIsio5cW9H5thBxWNq9cVjABIuWRo6bu4x0oyTaXlIF/ZDa1c1Lbuah7IoXE0 JOn+3Loc/+4VwDqfEKSSM2BxhtXfiJrArF0Ac9aI6GV7TTESKJwnQR+oMOlqnz0By5 /C+KWokRaDvictcUwj4IWRiDfflUF3QFe78wEATOAtrSWcWbPLdtSt3zhb5gl4K5xm gKKJG9deuYlvw== From: Jeff Layton Date: Thu, 22 Jan 2026 13:59:16 -0500 Subject: [PATCH 2/2] nfsd: remove NFSD_V4_DELEG_TIMESTAMPS Kconfig option Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260122-delegts-v1-2-40fbb180556c@kernel.org> References: <20260122-delegts-v1-0-40fbb180556c@kernel.org> In-Reply-To: <20260122-delegts-v1-0-40fbb180556c@kernel.org> To: Chuck Lever , NeilBrown , Olga Kornievskaia , Dai Ngo , Tom Talpey Cc: linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1967; i=jlayton@kernel.org; h=from:subject:message-id; bh=eHrRDbXulGw1DGJlTJrcvKl0Qy2dxyb4zrCEW8M0DmA=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBpcnOKeiOxDOBYjvPD+GuZotrHoxfaSat07JZgK k7qjQ7gJjyJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaXJzigAKCRAADmhBGVaC FRCUEACsjppKuQXiQaWLE3JGf3x7mekwycq/pHKj6b3TvSoYzEq/2jDw+fLc/7E3gs7VtS2WNKX RivXpJV3+8+um/izU83gUoqJwNkGNYKLflwryi3bDxNW5i6THCmYU1iw7++5EJ/2QwpA8NVc8o0 8xKCCQ4s+J33Y4JI5iz7qrfxGVn7nraLBPdyMMT0mE0bv+fKAXpyLS0P6bQJk67CpSECnJcubfL V5J2EsLTq+Y8t+UWzKxqQMl3D+oZrer/YDIut193DvdJUP8vG9Bqyp8RQK6NJ4e+0Wy6WGVSTC4 hHieZgwKXFYduCjQyfLxEfYrIv4N/EfS/JffMRi0OCv08RSdA6Dx2KS16bQdBTOAXF2jCQoXkLZ TcwF+xl76izsFquARxUMEk1opGYs279SOPAmE+LEAFMuRISPIhICtbmZlTFBe4vhBn+MNaFF/hg R5UTipA+9CUJoBytVXDUwmQBPxD+s0M5bOBdLkKJGMVp11Uw8xCIuzZD/DqrfUU9ykAFjY4dps3 QYqh517OL2mupiyUhH0+1Y5GEZZG2POGCjPpnGIwTs+hITJtS88W1c8y8s7XfF1ri7w5LVNH+KE iV9b415y9IkCqx5JGrXt942pzjlZCHHt6zW4ZhvFstNZPxmCthsZJ4T0qdlBFFixRGJxeurUMft 2U0vteQUjJKe6Jw== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 Now that there is a runtime debugfs switch, eliminate the compile-time switch and always build in support for delegated timestamps. Signed-off-by: Jeff Layton --- fs/nfsd/Kconfig | 10 ---------- fs/nfsd/nfs4state.c | 7 ------- 2 files changed, 17 deletions(-) diff --git a/fs/nfsd/Kconfig b/fs/nfsd/Kconfig index 4fd6e818565ea24e4e16844a3f82e808dbc558f8..fc0e87eaa25714d621aa893c99d= abe4ce34228df 100644 --- a/fs/nfsd/Kconfig +++ b/fs/nfsd/Kconfig @@ -177,16 +177,6 @@ config NFSD_LEGACY_CLIENT_TRACKING and will be removed in the future. Say Y here if you need support for them in the interim. =20 -config NFSD_V4_DELEG_TIMESTAMPS - bool "Support delegated timestamps" - depends on NFSD_V4 - default n - help - NFSD implements delegated timestamps according to - draft-ietf-nfsv4-delstid-08 "Extending the Opening of Files". This - is currently an experimental feature and is therefore left disabled - by default. - config NFSD_V4_POSIX_ACLS bool "Support NFSv4 POSIX draft ACLs" depends on NFSD_V4 diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 95f2e87141a7ab5dd3da6741859bdcae28a8c6c0..e2f29ba490c6335e2cb6c3a4117= 70b3a19755095 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -6047,19 +6047,12 @@ nfsd4_verify_setuid_write(struct nfsd4_open *open, = struct nfsd_file *nf) return 0; } =20 -#ifdef CONFIG_NFSD_V4_DELEG_TIMESTAMPS static bool nfsd4_want_deleg_timestamps(const struct nfsd4_open *open) { if (!nfsd_delegts_enabled) return false; return open->op_deleg_want & OPEN4_SHARE_ACCESS_WANT_DELEG_TIMESTAMPS; } -#else /* CONFIG_NFSD_V4_DELEG_TIMESTAMPS */ -static bool nfsd4_want_deleg_timestamps(const struct nfsd4_open *open) -{ - return false; -} -#endif /* CONFIG NFSD_V4_DELEG_TIMESTAMPS */ =20 static struct nfs4_delegation * nfs4_set_delegation(struct nfsd4_open *open, struct nfs4_ol_stateid *stp, --=20 2.52.0