From nobody Sat Feb 7 23:23:27 2026 Received: from mail-dy1-f177.google.com (mail-dy1-f177.google.com [74.125.82.177]) (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 D8720426EB4 for ; Tue, 20 Jan 2026 12:33:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768912438; cv=none; b=A2xT2NxPeCTT6DWbDL2SVBjL9FqsAc6pKI2tocxFCUTpiAj8xsqPtSq+dYHk/jgUCRrvw+DGc12zb6q0emDCBSMIvGOsLRT2+TUABdeoa3r/MYMMKFu5BzeruLzqZcP/Ns6af2nkMwWwzi922VG2Qwko1iflQKHKEJPIDX6NpHo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768912438; c=relaxed/simple; bh=vPU2V50o5jpPnvrbKJzOO+bcSFJqLPqe32WzSG2rqCQ=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=QvfchHfKKtrlq/EnulZ9oC+QPcMDr9RoQUIEc9TOlmn2nEG/4iYGd0aNLSjBcucm3KO+J4Tvq/PIMOeB0N5HtHqnGMc15NLI23Cy3FspWmTukKNiYj14zSDp/6N3YXvL86YM4Eb7zxxnsQB/UBOO1NdbR30lWVnxBOFtcoPFE9U= 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=INFbe5lZ; arc=none smtp.client-ip=74.125.82.177 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="INFbe5lZ" Received: by mail-dy1-f177.google.com with SMTP id 5a478bee46e88-2b6bfb0004aso7469581eec.0 for ; Tue, 20 Jan 2026 04:33:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768912435; x=1769517235; 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=INFbe5lZ2fvrgVAzEAsP9iFzL/d6DtZEudWnhUZQiLdqfDJ7ulMUF+fZaiZU/3bOJ7 Q+DTMwctnZ/eJM3oAn6HZPyHxds/JfYA8PHQFP7yUKlJ+jHkYRHdkyKTdpXwj/EaHWSp ikgUJxP2cFjFfTTTK6Bs/ObrMUWmNKejnxsvU3kYN3LkWDpVA0zKbOtdDuLy2O6OZtlk +obHifrw2WSl5pyIaEftbRC6KiPCN4zGjw4EylGK/h8XzNShvCzb1ms50lnrXYinsupB 7/ZbC+t1N4txUTIPDC6AxbQu4ats8H0AY3Angx5byp+hHz+o7NmsFaMeOF8uyO04MIBS NIvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768912435; x=1769517235; 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=t1PSbwF6VtLdc5GFblEZwwkjkABm0NqOECVwvckBIJ8ziVxeYPwrHm92CXjNb7Rv80 usQC3Eivy+Oqld7MQtZcF+z35jhLuaH0ntYNiacAu55trmbBP/YzMgAUOtT4mo88OcSO nNlSM28Mm15SKaDvS4txeZqoXgCVdYIlUHwfTKfsvMvv4I2haWI4zauoAmphblqb0z5V xzZCQ1hbIqviZCCNAbD7sVrzB/hjAzF1ow00sYtDNO1VDEh/mvyTePSEAms83pJZmt2l 8ardAMgCEsjBrGNIxsvGgrZ50LjVXifvYmpaRiNxMLnp6PKWdVhPIIBPh1eppsF88mhC MJ1g== X-Forwarded-Encrypted: i=1; AJvYcCUsaWSCiXKX8CjdV5Wq1a+vOUFBm3uZXvvareiS5uUOtEuy6w9qW8YJ2k1+01AzM5xRsE3xgX+8pXm4Jbs=@vger.kernel.org X-Gm-Message-State: AOJu0YywBTHEbRrEK8BUogYh2kvFwNYKApL500e1L0UfM0wXT4arpplZ zue9mwwG0W8N04y18C9SPlPhKzBKMIcZkMf4JVVesMFkJKujEGLc2eVR X-Gm-Gg: AZuq6aIJ+TmoAkXch+tPOZfov8KvGZFATtYINM+2kq4X3QE7rVthaMqEOLaV98NA2x9 yPEdyFcx0D/p0fnlcBA3JNkVBo8AQDGzicxedHyMuhAqHpsA5cGNO1LWYdvYJXFMWjGFzuQkxA2 uTv7uWc5P+3dU27qJhsil+Y94Mp7s87UQwIoc2tCc/cYsWGvpOzeVr886GwvW9Nd9WB3uKvE+OO XpDyJkWoP5Oowzf+s03k0U6dLO0OHGao8BByeYKnyDBY8EvUVoYajxV4rtuZD/I0CRXmEHfMQ3O BEduYBbtaif/Gp3vz+vdHi6Lu6UctR/NcPssAjUsAhB9TevUaJV1APzOXFADE8YBS8KHJy3NhTY 9pXofnb6ysX59wQ9qCt0r2dAwatg2xpjF7MLea4Eihw6SIBpiqxiAA8SzvrVhFaHPAMO/tVL6yp 7TPLnfEV4aYz0= X-Received: by 2002:a05:7301:678e:b0:2a4:3593:968d with SMTP id 5a478bee46e88-2b6b3f2ee49mr7293985eec.10.1768912434418; Tue, 20 Jan 2026 04:33:54 -0800 (PST) Received: from fedora ([187.120.157.239]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2b6b34c11dasm18676778eec.2.2026.01.20.04.33.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Jan 2026 04:33:53 -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, 20 Jan 2026 09:33:39 -0300 Message-ID: <20260120123339.70724-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