From nobody Sat Feb 7 15:10:55 2026 Received: from mail-yw1-f172.google.com (mail-yw1-f172.google.com [209.85.128.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C17D730F927 for ; Tue, 3 Feb 2026 10:40:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770115246; cv=none; b=NAlGK2lzBl08k7byWr40UIjzKvrDdri/M6FVSm+1MVItT2qNGJmvmtw7wC3dDI1aNts3DyvjAk9rLGoXQWw1Agu1v2rQU4hRYQQ55GfBAZmBB5U4L4x3GbREPZ1duvGMF5bsumZFqnpc5fjNbT/ZvuCLMWS/1m5iC+RyLGTvJPM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770115246; c=relaxed/simple; bh=vPU2V50o5jpPnvrbKJzOO+bcSFJqLPqe32WzSG2rqCQ=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=CqZ6ZukuNurKoXp/xf6+cluaZ9DBa+JORJwHCWc9JcgntmfXMP2EgfaVOtPtsEJ4j8iKyuaUtQ5NfFwPOqmh1ulw/e0BZgbeMAieeGC27/KxURV6K9mK+mtvNWpmuZoAZfCJbzCwBOJY4vnRtlvwNgnNNgYu7qcSR7jKwcBNLU8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=b65lazlL; arc=none smtp.client-ip=209.85.128.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="b65lazlL" Received: by mail-yw1-f172.google.com with SMTP id 00721157ae682-794911acb04so52002157b3.0 for ; Tue, 03 Feb 2026 02:40:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770115244; x=1770720044; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=TG6EI6RBrBqfcG1Qj/7XoK7r3FMDle9OXgLojBRhNAU=; b=b65lazlL5ZhJeBgmTWee8sNYqZOrbDrkfm6jdledvymF90jrzooVHeeL0xZ7qcXqCp 2zm1eRYl2VQU6xaFDMpDZzZE9K4DrofuZggIl9SzdMwnq61XevNkJIsn0toP0DNw0h7y JkMLwmrp7y/kcnfdhwwaqwedH0BtFyOv2gYpTYdN+srk+qwwMs+w0jmTrxhRXW7FI66W efr2sgVGykOSkeQmEUnrpLVYnQZDQi1gk7KZW3NPtBKlYxI2RhX4GI2sgvmtqwT2OMAj e+qRp4NQBfzuwRiplfCO/Gdl8j0Fx4yO15GAB+yWX8VBjYGLONgwEYwdCSEdtiPIefUc BaQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770115244; x=1770720044; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=TG6EI6RBrBqfcG1Qj/7XoK7r3FMDle9OXgLojBRhNAU=; b=GYtqCzQJFVaPap3FrQE4/mI3+GPyV5w4WaZGDdG0CPag8WyG84KczEGQ/RMXgWPGfA sGDPeHhEVh/fcbfwFCgG/TjmNP0kjly3M2lcsvC+M6kVOGt1utdj2gKrZ5MCdel/ORJp GkO7iIJECBSaU8uUZ+y0tfJjfhtA8KdugkuvVWKvL4heuWEjrpG6jNlbOqg+QQk0w+Jh 0Dsbk2NwegRN2eQGaklWLOmP/iT70TsYf49pKBQ/sM1eE5G2LvAbzmjnkwC49MNmSBVS oMrvbtcDJh/2UdPvubtt0BTSwIaINlfvIFgbfKeilWCirP9PWECZqRbWtK3xdNEBbOiS tHZw== X-Forwarded-Encrypted: i=1; AJvYcCUnAUiLXIdEVyTqAEr5cXcRBuyDLuxGfX49hzKcbbWRvdHCjTwtD4L/C4y0pfxTBzjjOqtybDJY3VOE/eE=@vger.kernel.org X-Gm-Message-State: AOJu0Yxgfig98EDfAFdp8mC5MTxMPN9FkJkyg120m15ciY10ITAEjpQ6 vQ1l5cuWPE+3Ma1w67OTpuOSX6p5kF6PcSI1jQdKIhmc3v1cfkmZJ4Q5 X-Gm-Gg: AZuq6aKc9IrPWkvy7ok49/MZTWUMsSKx6+gs6PbCBc5XJcuyCMCa0M2jA+QDphZgHE9 08yqQoqPpqsog8A3Z2f7Ol0169LSNg7dD0eioAP7W7KN6wVCNAbb+rlkOp9QWx29nRp6BxJyrLj E103TLzk+KcpQDmi5Q/7ptmPAf+NUeCOPRQIqc+2oPf/TVSwmWTvHg0NPwG7qS1xTcx0JKVS0DW t484snj4KXe1qn9YJqZomKozaAp/oB/XNJ96+Sh1Ke81JuWXC0Sr+GlAAm4+EIQ03tz/Y1AywDI 78rjB1y06UsSAew6gFKcTmSy+7neDP2xc/pnOttaVqhHQaPYK/fJKVkR/glM3wj6DxcRbJPPAgb 4Ryx89DIrl8Lnw5s9WmViylcQ7cxmJZH6vYg8xt+x1A7rCH7UpFSagoyrHVBK1T6v+mYVHWpFkQ fJuIs6d7mGVw== X-Received: by 2002:a05:690c:2703:b0:794:bd20:ea1f with SMTP id 00721157ae682-794bd210154mr72796687b3.47.1770115243635; Tue, 03 Feb 2026 02:40:43 -0800 (PST) Received: from fedora ([187.120.156.78]) by smtp.gmail.com with ESMTPSA id 00721157ae682-794d4a54de7sm47138167b3.38.2026.02.03.02.40.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Feb 2026 02:40:43 -0800 (PST) From: Guilherme Giacomo Simoes To: agruenba@redhat.com Cc: gfs2@lists.linux.dev, linux-kernel@vger.kernel.org, Guilherme Giacomo Simoes Subject: [RESEND PATCH] gfs2: do not evict glocks with populated address spaces Date: Tue, 3 Feb 2026 07:39:41 -0300 Message-ID: <20260203103941.12918-1-trintaeoitogc@gmail.com> X-Mailer: git-send-email 2.52.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Metadata glocks may have associated address spaces used as caches. Avoid reclaiming such glocks under memory pressure while their mappings are still populated or their state is not unlocked, as this can lead to invalid page cache state and GLOCK_BUG_ON(). Signed-off-by: Guilherme Giacomo Simoes --- fs/gfs2/glock.h | 30 ++++++++++++++++++++++++++++++ fs/gfs2/super.c | 3 +++ 2 files changed, 33 insertions(+) diff --git a/fs/gfs2/glock.h b/fs/gfs2/glock.h index 55d5985f32a0..12f57461f687 100644 --- a/fs/gfs2/glock.h +++ b/fs/gfs2/glock.h @@ -305,4 +305,34 @@ static inline bool glock_needs_demote(struct gfs2_gloc= k *gl) test_bit(GLF_PENDING_DEMOTE, &gl->gl_flags)); } =20 +/* + * gfs2_glock_not_evictable - check if a glock is not evictable + * @gl: The glock to check + * + * Glocks which do not represent normal filesystem inodes (e.g. statfs, qu= ota, rindex) + * may have associated address spaces used as metadata caches. These glock= s must not + * be reclaimed under memory pressure while their mappings are still popul= ated or their + * state is not unlocked. + */ + +static inline bool gfs2_glock_not_evictable(struct gfs2_glock *gl) +{ + if (gl->gl_name.ln_type =3D=3D LM_TYPE_INODE) + return false; + + if (gl->gl_ops->go_flags & GLOF_ASPACE) { + struct gfs2_glock_aspace *gla; + + gla =3D container_of(gl, struct gfs2_glock_aspace, glock); + + if (!mapping_empty(&gla->mapping)) + return true; + } + + if (gl->gl_state !=3D LM_ST_UNLOCKED) + return true; + + return false; +} + #endif /* __GLOCK_DOT_H__ */ diff --git a/fs/gfs2/super.c b/fs/gfs2/super.c index f6cd907b3ec6..86544cdafe53 100644 --- a/fs/gfs2/super.c +++ b/fs/gfs2/super.c @@ -1164,6 +1164,9 @@ static int gfs2_show_options(struct seq_file *s, stru= ct dentry *root) =20 static void gfs2_glock_put_eventually(struct gfs2_glock *gl) { + if (gfs2_glock_not_evictable(gl)) + return; + if (current->flags & PF_MEMALLOC) gfs2_glock_put_async(gl); else --=20 2.34.1