From nobody Sun Feb 8 05:23:11 2026 Received: from mail-yw1-f173.google.com (mail-yw1-f173.google.com [209.85.128.173]) (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 C6E59A41 for ; Sat, 10 Jan 2026 20:07:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768075655; cv=none; b=Lqi/dBb2ILxEHpLn1zTnIpcCQhLlbCWHaY9Z9nexPhkiezWioNUUYj+zZirFZSQ8OxuGBaYDnu8Ef7ZPaPT1MWl8/KjbB7nz+rLCXOD01XszFAfGWH9o+u1P4jOHPExKkmkvWHwUC2Nd0VeeiV6fl0E2fdnMnMonKOAaHq+7V9g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768075655; c=relaxed/simple; bh=bOETZVm0qxEk8btX6K6osNkaGtR9dzjl/K7U6RSO5dU=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=RAXc6bO8RnAZT7qBkbKYO2gkVg78Ta/PjqgO5i0sI6uMGMhZTAiAgvx/E8e9ehH5Fs0ZLDAkscWqh40140nVnaBypN5m0GsqLCze+ysVQEdrwoFFZGgeFpPAahtSixZKiEUKwZJE0vJr++7fO9P/kTnAOcu6sFilAuUFX4ZuFUI= 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=LpQzpSVj; arc=none smtp.client-ip=209.85.128.173 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="LpQzpSVj" Received: by mail-yw1-f173.google.com with SMTP id 00721157ae682-78d6a3c3b77so45565217b3.0 for ; Sat, 10 Jan 2026 12:07:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768075653; x=1768680453; 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=WSMGOWW2GLR17oKn19X2kPxIW0U1HAEdW/YRy7tX55M=; b=LpQzpSVjm9SYDi/8HnpHFwAeONfy9zJCVOZO83vWyIZi6LGThFyYU7U4fQosmLg+/U yQyQcfVIiV8c4EtdV2GLLun+4K4qSjBjGz5DrrTY4l8tJNuS/OzPxceqbI+ObNvRCbHy 2IsgOwXOcUMUJhFyA1XyuZPA0S/uXTi8fYAUNgG5AUaKSB8QbaN3tacXO6MwCTPwAMqA D0fcsdS13Nlh2oYCdiC/EZBOYuzs+hk/hiFTNXHre6QV4mKtw7ElhycCgmE5GH+zjX9T iBsVKdwoxJPijJHntdooTHQN7xd8OgyCOrMealapYISsTf2BTjtzsH8gwmbi0rsoAdfH QJqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768075653; x=1768680453; 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=WSMGOWW2GLR17oKn19X2kPxIW0U1HAEdW/YRy7tX55M=; b=LOlz/DvsPU6drMZ153CcMrFoGtErFYC9/gkgPFebdnUFacBQC1/W7QC5NXdt/Q1nxq AzTii8NWdnxpHdXJfQXI0a4MSpP0E5SSZDGQiJDnSqJj13peL76f9M81W/+dO3UIJmoz 7lp7BMqxk0nOBnESHidj5UVviWF1KeeCeuEVDYoIvncakFL9GWCWgoCzmpsVuxnPmS+V zDDGHFFeYRQhYxdxZEAFPoQc9JT92UC3ZUyiyNFbO72FoLq+sAcD66PesbhkSiDgPjMC fm75DZMhac3kllGW+l0eC2JNjrO+nzEqAhWNMB9WQfTtPF8uEzQfjL6P8hYyHhhl2soU mmKQ== X-Forwarded-Encrypted: i=1; AJvYcCURT/qT+imAv4cTQXNwf3OM7i7aldButxiV1e2ARTUmgvZ4PjqO+UPFVGTq2x9SCFl2kNK3xoAOT2daaiA=@vger.kernel.org X-Gm-Message-State: AOJu0Yy9+DC7ksjnArlKXVb04TB6v4ledFDo7vdGwPn6zVy3FE8xWSHe n0QTh5M3oXYCCzrJx7JTA3X170rvYWGvwcIouX+KJyqDNx5Ehd8M1EAi X-Gm-Gg: AY/fxX63+TKsd4azIc4BKqDOmNeEWWLUd1FvmrQVlmf93nytqkFARfPGTirnWjMu8In y62+SYfLFyOLhO3aKoNu4FhIZ2fWmlOtnvKEBa1oTBgqVSOKNdveAUp3izow2er+UKoAzwhbrIz 0dwt8CgOUcNRjBaNDqL3zShCulFWof7Z5x2mzY5bm3VDhVS0ITSbYpZQuN6Kw2hUEcsdDfQHroI 9Ft4dFf3emQeluzG48OlEyCYwJ4k62uT49HMm4LczCujeQvbful5vAD2yDYVzODwZ9GejfmwIvW sLg46ngTQgjW6EHvBLtHZp5yL0GWNEylJ5/gNd4EZTJTMSG4yf325l5zeIupuzp0wWKC1Yd1yS5 uUWl8VQRXCNoXWfyDZ5Kjmt+gcORTqn17/dTmy+xCRpWa8ao/QUrToA4v54knI3U4NXkrzT04so CFoNk4fXMnzemOODpZeoal/BzjQzjba581 X-Google-Smtp-Source: AGHT+IFGGvQ4ckLtQoov18lbVm0nDz4ry6J1waR7yoyqcAefIEE9RdOZObQEjVcYzrhxdbkNJq783g== X-Received: by 2002:a05:690e:dcc:b0:646:c662:5fc4 with SMTP id 956f58d0204a3-647167b8da7mr10823399d50.45.1768075652801; Sat, 10 Jan 2026 12:07:32 -0800 (PST) Received: from newman.cs.purdue.edu ([128.10.127.250]) by smtp.gmail.com with ESMTPSA id 956f58d0204a3-6470d71cad9sm6137960d50.0.2026.01.10.12.07.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Jan 2026 12:07:32 -0800 (PST) From: Jiasheng Jiang To: Chris Mason , David Sterba Cc: linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org, Jiasheng Jiang Subject: [PATCH] btrfs: fail metadata async reclaim early if filesystem is aborted Date: Sat, 10 Jan 2026 20:07:29 +0000 Message-Id: <20260110200729.9590-1-jiashengjiangcool@gmail.com> X-Mailer: git-send-email 2.25.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" Currently, do_async_reclaim_metadata_space cycles through all flush states even if the filesystem has been aborted. In contrast, the data reclaim path (do_async_reclaim_data_space) explicitly checks for BTRFS_FS_ERROR and fails all pending tickets immediately. This inconsistency causes the metadata reclaimer to waste CPU cycles performing useless flush operations (like attempting to commit a transaction or allocate chunks) on a broken filesystem. Fix this by adding a BTRFS_FS_ERROR check inside the metadata reclaim loop, ensuring that we fail all tickets and exit as soon as a filesystem error is detected, matching the behavior of data reclaim. Signed-off-by: Jiasheng Jiang --- fs/btrfs/space-info.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c index 6babbe333741..b3aae44a1436 100644 --- a/fs/btrfs/space-info.c +++ b/fs/btrfs/space-info.c @@ -1189,6 +1189,14 @@ static void do_async_reclaim_metadata_space(struct b= trfs_space_info *space_info) spin_unlock(&space_info->lock); return; } + + if (unlikely(BTRFS_FS_ERROR(fs_info))) { + maybe_fail_all_tickets(space_info); + space_info->flush =3D false; + spin_unlock(&space_info->lock); + return; + } + to_reclaim =3D btrfs_calc_reclaim_metadata_size(space_info); if (last_tickets_id =3D=3D space_info->tickets_id) { flush_state++; --=20 2.25.1