[lustre-devel] [PATCH 4/5] lustre: llite: disable fast_read and workaround

James Simmons jsimmons at infradead.org
Wed May 11 12:38:42 PDT 2022

From: "John L. Hammond" <jhammond at whamcloud.com>

Revert the fast_read stale data workaround from LU-14541 and disable
fast_read by default. The workaround causes applications to receive
spurious SIGBUGs when reclaim is concurrent with mmap page fault
handlers. We disable fast read to avoid the stale data issue entirely.

This reverts commit 15caffd4dc36c45f53458c2d6493f07b95acf507 and
re-exposes us to the consistency issues described in LU-14541.

WC-bug-id: https://jira.whamcloud.com/browse/LU-15815
Lustre-commit: 201ade9442828fbb3 ("LU-15815 llite: disable fast_read and workaround")
Signed-off-by: John L. Hammond <jhammond at whamcloud.com>
Reviewed-on: https://review.whamcloud.com/47204
Reviewed-by: Patrick Farrell <pfarrell at whamcloud.com>
Reviewed-by: Andreas Dilger <adilger at whamcloud.com>
Reviewed-by: Oleg Drokin <green at whamcloud.com>
Signed-off-by: James Simmons <jsimmons at infradead.org>
 fs/lustre/llite/llite_lib.c | 2 +-
 fs/lustre/llite/vvp_page.c  | 6 ------
 2 files changed, 1 insertion(+), 7 deletions(-)

diff --git a/fs/lustre/llite/llite_lib.c b/fs/lustre/llite/llite_lib.c
index ad77ef0..4578a9e 100644
--- a/fs/lustre/llite/llite_lib.c
+++ b/fs/lustre/llite/llite_lib.c
@@ -169,7 +169,7 @@ static struct ll_sb_info *ll_init_sbi(void)
 	atomic_set(&sbi->ll_sa_running, 0);
 	atomic_set(&sbi->ll_agl_total, 0);
 	set_bit(LL_SBI_AGL_ENABLED, sbi->ll_flags);
-	set_bit(LL_SBI_FAST_READ, sbi->ll_flags);
+	/* Disable LL_SBI_FAST_READ by default, see LU-15815. */
 	set_bit(LL_SBI_TINY_WRITE, sbi->ll_flags);
 	set_bit(LL_SBI_PARALLEL_DIO, sbi->ll_flags);
 	ll_sbi_set_encrypt(sbi, true);
diff --git a/fs/lustre/llite/vvp_page.c b/fs/lustre/llite/vvp_page.c
index 1e95ede..7744e9b 100644
--- a/fs/lustre/llite/vvp_page.c
+++ b/fs/lustre/llite/vvp_page.c
@@ -164,12 +164,6 @@ static void vvp_page_delete(const struct lu_env *env,
 	vmpage->private = 0;
-	/**
-	 * Vmpage might not be released due page refcount != 2,
-	 * clear Page uptodate here to avoid stale data.
-	 */
-	ClearPageUptodate(vmpage);
 	 * Reference from vmpage to cl_page is removed, but the reference back
 	 * is still here. It is removed later in vvp_page_fini().

More information about the lustre-devel mailing list