From nobody Sat Feb 7 15:12:18 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 D33ED1EA7DF for ; Tue, 6 Jan 2026 12:03:31 +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=1767701013; cv=none; b=llllKLM7yIclmUBgyCjhoe3oORVfxDDVUonyksdCbeJcP2t4NLSt3AS5fqCVVrGn+b0lFzxjcLvWFEqKzmdraK1VlnshsVBokfVpyX8pNx/EjJve5KUnGoS8JIptF5fCs1jsDKVRGYQiR9GDLCxvOJnAlp7fcteEOxtNoTl0Uv0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767701013; c=relaxed/simple; bh=vPU2V50o5jpPnvrbKJzOO+bcSFJqLPqe32WzSG2rqCQ=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=Wd/4ntz9OllMyRlqIKjVwcLiSY3G+y7wT1qg0e873/UWLjmExsTV7oXYi3/MOhfiab4Gns1VORdCwPXJXubQOmJ1boPaVgdWhKapzDEbpLqq0lCNb9zR6MknFR7940mio4fm2qhyTXJ3QyXVlsEGWJSbJB9YngjDleRPKUKob9Y= 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=WmwFG1Cu; 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="WmwFG1Cu" Received: by mail-dy1-f177.google.com with SMTP id 5a478bee46e88-2abe15d8a4bso80585eec.0 for ; Tue, 06 Jan 2026 04:03:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767701011; x=1768305811; 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=WmwFG1Cus5LGM4l8GrdlUCuHyKpAJW777TxUooIP2l5qUDx4uJHiu28YW3PX8kQhd0 2TPSSEBVRzv57kuRzcB30fgoKkJDxZ9GtDUrXVyNbB0SEHAbcZWZIqCbd9gD1A3CazNg 7+GuMpon06SGdCdj7DcFQbb5rZdBfXNqYD0H1wNgWL57niqTgoFshSYsSMDPKCYo67Qm 1Cydh2FnmH6wooUiSlvhnV6ULRof88xC1biG/gmNugMb4WeuBD0u5qPdQsj/hwftxyUH QhrsvvqA+YSbK7JUiC2oySvRe0Y29mR6nuUdMpVkWTFBHAsNS8RMCCnSQbXMoz6NobvP 4fVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767701011; x=1768305811; 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=JGyQf3VzgkezdjxoxwgmlAQMg/SW6dSlTuywzg5KgFOPv+0l4R5UySQk84I9J1v4fz AyKwgHcPWxPSK+yTGoafbd/s7W76UA/b/pKAU8EuDlZqje8IPkeoM4aDK3L7FCE0clQy pfEcVSbfYxrV73l1Cli/dDjMxZi/XC9xj6VX3Sxe9nV9mx0TKy98tRmsH0ydOEeUYAI3 QtalmUmdHq4bad1WiTxMnvRxBeLMXvRdF37KqG/GKju0yN0nwYCwhCBil5RXrZLZ7SKC XxCX0t/IvQamOc03hY7aPV0lpfIl6fdB/xRlMDoEVd2HtVfax9TmZXQE/pyz0+NxiQHF uKfw== X-Forwarded-Encrypted: i=1; AJvYcCXmKa+vEA8Zc1PB4Yn4ZZNbpoIjSfSknGDb5f+N92YbPH5q/DdlwZ/AkaOLmQsigvBU6/TVjMN87YuJ3FU=@vger.kernel.org X-Gm-Message-State: AOJu0YxP2i6TqmgC98b8VXbS+rmQpOaC+XqEWbdA9rb50TcAye8EeeCC agZKEjzbwH18KFshi3Nv1nv839oFsPLuTEnhxIzEA4A9vPFMl3uL2Obm X-Gm-Gg: AY/fxX514kUifzf/8aZ2ySO2lsZbrDZNZSh9+8yAR7R4WMQOUXWeG04gl3guyKNSBfQ n98ut/tjO8EdmIDT2jZbfweR6QBUB0Rj/2ypnpAqzTBXGr4D7ChVeDCSpfDPAI4G+mdrX1zNacY PTM/kkPHnE9zmUwaPNduI2rqvIeAplFpJZqP/Opx45DfgKM7kbpT3F2s2/S2E/XMZM/ml9K9TRf iLp9//zInPqeG4KUXhagbtZ/T+YE4xdHVGaU7hDIZsV4wt3sb/nPisfbzL2lRFXa68Psk+tJJhY wMusa8YwsomNZ5jfEW+cI2C+woQRJjLRoi4ye4KbJIntzcEFq9dfWwOloNYKdIXSnTHIzOXNA+5 si2847EMthtGES38H2maVisSqkpKBDkrN49HXIeMCvBqJ6nv97FqHcrJrksWbIGKY58QUOVKPbp bEAYSS28iKuQrI X-Google-Smtp-Source: AGHT+IFj4146v69Oid39QNVxZcB3jibZe3ZAf9oxB0gtuSL+7plwWKs6gedk2S6QrMuLAOkMrSiUrg== X-Received: by 2002:a05:7300:cb0e:b0:2ae:5b9d:63ef with SMTP id 5a478bee46e88-2b16f86c5famr1813855eec.12.1767701010701; Tue, 06 Jan 2026 04:03:30 -0800 (PST) Received: from pop-os.. ([177.21.143.113]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2b170675076sm2844495eec.2.2026.01.06.04.03.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Jan 2026 04:03:30 -0800 (PST) From: Guilherme Giacomo Simoes To: agruenba@redhat.com Cc: fs2@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, 6 Jan 2026 09:03:23 -0300 Message-Id: <20260106120323.195094-1-trintaeoitogc@gmail.com> X-Mailer: git-send-email 2.34.1 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