From nobody Wed Apr 8 03:06:13 2026 Received: from mail-dy1-f172.google.com (mail-dy1-f172.google.com [74.125.82.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 6FABF3148C2 for ; Tue, 10 Mar 2026 17:54:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773165275; cv=none; b=GeUBK/0zGZVm53HTWNaJARA/Xht2Kp+J/V3nfryUCjDcvmyEGMImPBtt6hPxYYxjXrz2XtHzen9KgML+ehzSA5LT8VwmSOH50ctpHpd5XBfbn3jxOC+0UFRchTx4s3dZ9YfozjvnmbBBd1jEOHPvCZ9Bzt5M0rTk8y2SS8nhmfk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773165275; c=relaxed/simple; bh=np0yhz1AKZ821mxpvOQnGcItmW8iSazfoD7n6ep/PhU=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=HJ0bvXII9pvNvBzEwQoxKThGUk5CpyKzo7A/d4SvZ3AO6HQygss2R7L0+3o2Z/jD0qeXUxB3AcA1kMQdJtz/DMJfBAK7pAVpvWgJY0MRllNBKa1VYRUgSLhBrzqDv9g9EA9dOiQkqnxN/SZR08DZY9rttqSaasJkSsjU3kHYWbA= 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=ErX0vWwd; arc=none smtp.client-ip=74.125.82.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="ErX0vWwd" Received: by mail-dy1-f172.google.com with SMTP id 5a478bee46e88-2be1ab1fa7dso6569392eec.0 for ; Tue, 10 Mar 2026 10:54:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773165273; x=1773770073; 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=XbzTvS3EAv++rNl9al/HljoKtTK5FcMi/cSpL9WxQWc=; b=ErX0vWwdeOqCTP43nv7naMljapxIwbVCd+b+uFb+6QtlLOyS5JtxZcqRRKbEH0vWJK avqdQ0JHmf7EUlYemXsddo9M67uiYeQ+aG5zQnDsn7L5VU7sIEZtkeHS1/01/lV3s1oU lohIPJeTqoirWvE0LC6+V2SYDKDHfFWC5kCuUi7kEONRvDjkuebsTtcfqiPUi5onnFOv yv3KMHFADo1rhIDe1FQYY8rOAo9YiWOdhsBHuvZ+M9fEKM+TfiUU1kfWKGXXuwDmvq46 Of+jGaH76jxc7dQ44Jq8JAdbDFiS3aocqadQqHvlZCi5MuxCN+JnWS1TCZfsvjZ4AKni fZZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773165273; x=1773770073; 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=XbzTvS3EAv++rNl9al/HljoKtTK5FcMi/cSpL9WxQWc=; b=Gz5ww5k3rnth5wZlRFHN3hCOJuMkX1zvMrqCe7K+LJE1IQM4fSmjVOZEZzVRSG8X7s EK1Rkf5ZqZkSFeCKVJkd9qjdHuxDq3ukYe3l7kA77V0n8SqZcMDz3sAL26zxdIOmhrxR N7ByYupzjuHnoTiqsqF4V/4BzFUwObrNonHULcq46jeXE2INZSAuPNmPeJFwKKQKkBx/ YvsDJq4F7n/s4A3x3WYgE2HvVLf1Mx1S7gqaxQ6JIh+PPHqNbEAUrXzP/sM6TL7NS0HR Xg5Yj2b5xKyRvsGgKB6P6k0hfVnneclxfVND2UVypwVFHfM/YCZ2HmpN3hc2NrPGHyr7 2xFg== X-Gm-Message-State: AOJu0YzocJIeZqf2y69qeyczHpuMl07IFnulHwKZLypvH2c8XZoSvMLw Fo/w6Jn5ZkYsJXta/NvXoY2brJ1WAOu1LrIAsDnqJWz+o8hPAGBqIjlAgjla+g== X-Gm-Gg: ATEYQzwgGgU2OYyyWW9Eim7CqEt4U8JRUnJCVlPbjbsMOT62hhIZ+a4yb0McHfh9vnU /EmrXw/mjH6y+rLGJJQVpxT80BThhxursTrq5ybH+a15XfsLrnNL8EJrS/cmE8C3WPbocmLLkz2 7BIr4E1Herf7D3wo2ejmOwKqHjeCU3jawahu99FOGc8TTk+Hg4HEE0+w+6ibIzalTDIY37+MDTA tiTQJRBXqKoskdF+9iiUGBlArOtxPGC3txApkd7vocNLk1QX0uoPZuAuhlnb/2Ga+TojoizJvV5 NBiGvn6Obg5FwvgfKC2kHnu9NNHlkQ4XPlW48j0Qf6qUv8UKPe6NYjfQSpQSBI+38aBhyJxZ8U1 8ZzP3qToNSGuMUhwSMtjTZy1utgravMz4muaFMkTjv9c7belcUmVdnVp9LAYTi9DU36nSTiDEDA HwtjlBGLGnbxgTq8LnBKiJdTPt0WzHBkTiQvOsyDXE1YAJMiLgIbKrXqvQHyRVNvmNf6BMOYIbk ClLIjB0Ex7w3SlFismeBFs9OfBSLkcWVNPIAxvrKK6avKpHoToenwFCQoCLpw== X-Received: by 2002:a05:7301:1015:b0:2be:2409:6c6a with SMTP id 5a478bee46e88-2be4de76400mr6649719eec.3.1773165273087; Tue, 10 Mar 2026 10:54:33 -0700 (PDT) Received: from daehojeong-desktop.mtv.corp.google.com ([2a00:79e0:2e7c:8:493f:f39e:ec36:a0a3]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2be4f948390sm13951265eec.22.2026.03.10.10.54.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 10:54:32 -0700 (PDT) From: Daeho Jeong To: linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, kernel-team@android.com Cc: Daeho Jeong Subject: [PATCH] f2fs: fix to skip empty sections in f2fs_get_victim Date: Tue, 10 Mar 2026 10:54:28 -0700 Message-ID: <20260310175428.1156719-1-daeho43@gmail.com> X-Mailer: git-send-email 2.53.0.473.g4a7958ca14-goog 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" From: Daeho Jeong In age-based victim selection (ATGC, AT_SSR, or GC_CB), f2fs_get_victim can encounter sections with zero valid blocks. This situation often arises when checkpoint is disabled or due to race conditions between SIT updates and dirty list management. In such cases, f2fs_get_section_mtime() returns INVALID_MTIME, which subsequently triggers a fatal f2fs_bug_on(sbi, mtime =3D=3D INVALID_MTIME) in add_victim_entry() or get_cb_cost(). This patch adds a check in f2fs_get_victim's selection loop to skip sections with no valid blocks. This prevents unnecessary age calculations for empty sections and avoids the associated kernel panic. This change also allows removing redundant checks in add_victim_entry(). Signed-off-by: Daeho Jeong --- fs/f2fs/gc.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c index 2e0f67946914..981eac629fe9 100644 --- a/fs/f2fs/gc.c +++ b/fs/f2fs/gc.c @@ -521,12 +521,6 @@ static void add_victim_entry(struct f2fs_sb_info *sbi, struct sit_info *sit_i =3D SIT_I(sbi); unsigned long long mtime =3D 0; =20 - if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED))) { - if (p->gc_mode =3D=3D GC_AT && - get_valid_blocks(sbi, segno, true) =3D=3D 0) - return; - } - mtime =3D f2fs_get_section_mtime(sbi, segno); f2fs_bug_on(sbi, mtime =3D=3D INVALID_MTIME); =20 @@ -889,6 +883,9 @@ int f2fs_get_victim(struct f2fs_sb_info *sbi, unsigned = int *result, if (sec_usage_check(sbi, secno)) goto next; =20 + if (!get_valid_blocks(sbi, segno, true)) + goto next; + /* Don't touch checkpointed data */ if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED))) { if (p.alloc_mode =3D=3D LFS) { --=20 2.53.0.473.g4a7958ca14-goog