From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) (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 2F72B440649 for ; Wed, 19 Aug 2026 18:21:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=209.85.214.170 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787163710; cv=pass; b=CgjzTBUY4tKBmKGQvTiJf7sfI2MP8JC+9lqI6DtxYNAMWy4xKJtl1qEMtwMvaSqNjZPRFO4Wzg7fKKyWAF9wpwb5iHS9IIXLg5fDbSJGdwXYpWToAiv357HlrT17rprmRGA0CUDmuAjm8+E1WYKDJAUbS5T56Yma5ZkPGskOKtQ= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787163710; c=relaxed/simple; bh=6OnZcXhOBhWJN393X5GupNijmfU7o2bji9a6JhhyTFk=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=kSNZzFjwzr0akUGkOEWBerNovaSvbYShskSBbZTPIgREs+rYl9YXkK3CvmzzMwayMvhxp77FNcO8urMKEkUk7j90U8cbQqgRSca8wl55iZ6aXG5A44kR+VRAjE6MxWFMtaCQPdVyxR4rY+4SYVAFGwNjvkTuSHKQO8ySTHnzUPI= ARC-Authentication-Results:i=2; 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=I9z1QlDh; arc=pass smtp.client-ip=209.85.214.170 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="I9z1QlDh" Received: by mail-pl1-f170.google.com with SMTP id d9443c01a7336-2cc7ef7ec27so17196025ad.1 for ; Wed, 19 Aug 2026 11:21:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1787163708; cv=none; d=google.com; s=arc-20260327; b=gx0dJ28pUfkDiNvA026tBtUP3PZtUKZzeK3uZtLTn7uJYB2rwQoeYMmcj++v/cG9+m C+YQBDnkVBKq6ZmFBbJXxHoihvezSl4NQxsMfnFjo5Sp1Ba03DMlrdV6ct3EjwMkUWzb QfRtb8rW9XZI68CMt0eV8J9bqYaM08POHqVV8YVoECKra83uKnSPEHLKgiZVg8Fspx0N qBm0bE7gU/VPF7PrwgIzffxrimIUEvx/uPUjdYHdJgD6jP+Jhpx3drhTfwJW8SeWDRWJ 6rqe4xxbUD69Q1xNLP4THkXMvroLAdkl33NlbeA1kbDRRaxYS6kA4d3sFzkhaMM0rCgc oGEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=67vq9+5qo1NN7v2QSv4cV/kOXqVVR0u+8bk6NtCqYLw=; fh=sPilOYAT4QfMgYxGH2LjRrcqbLUzvrQqMQUicHZMufQ=; b=gtSV4QZZL57rM1MobPcggIChvdWmxPc99MftJDsO17b/FZjLjvFDupcEq81NOWTnp5 uH30IFgBk8UDF1eKb48/+b6CMhV2scTBxrG8kUukbIJZtKLJgYBa1qd8ZDWd8O65CjLj DsmmheA8zk01yBx6Fjm+ZEZYFdyet7Kaqi8bD5M18z9xyhK+deibPjnvKATFVRWrfFk5 5PYMLDyZXmArsGtqOAnEf2asz2RtbMdihAIqFuZkCDLgwo1mBFuk8AyKZYi1FVa35uKo CvEfhbE3rBZ8z3OeD6Yznf91OA+VUXDjvdAPXFda5JWV/oSXnZ/v51mVTfqCeNC3dhxZ wMHg==; darn=vger.kernel.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787163708; x=1787768508; darn=vger.kernel.org; h=content-transfer-encoding:content-type:cc:to:subject:message-id :date:from:in-reply-to:references:mime-version:from:to:cc:subject :date:message-id:reply-to:content-type; bh=67vq9+5qo1NN7v2QSv4cV/kOXqVVR0u+8bk6NtCqYLw=; b=I9z1QlDhYbEoy92bC2xJz3B7VCOD/NpdBSAPBRL7gWZnAa8DSh59nzbmnYsNthU/en mfkJTKVRw0Iv8p2q5AuXbhuJelFZEWRrDqX9HBpgRDOWDrm9eTHwjxdy3IVdqY0bB+tV 6AQ8hD5yh2tX9Oix9LnyoXCsLm1R9Ddzr3cGDbaHfwrI10C9UuDJNksWEpB31J9oC9S4 z8euuRp3QzKPLn+22CYxyVA0wCNktqqIIhQeo8h2PhwqW4d9Mu/qpsuUVw+VDU4g9IVm A1lkhbzECu9/WseSgyY1GwYMe4NEWBiDJphMHRZat/P/caYTZf8UujKvHo7uRQbmyaKt Ej7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787163708; x=1787768508; h=content-transfer-encoding:content-type:cc:to:subject:message-id :date:from:in-reply-to:references:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=67vq9+5qo1NN7v2QSv4cV/kOXqVVR0u+8bk6NtCqYLw=; b=pRXasRKhQVY+q/0tAD3oj+gAkM3iRHtdkVga/HQruQ8lOJUWCc3MmS3bd0bX95pV/Q s+G3oRojCLINg0cZNLZmrYgvoMm8FPkRXsPLQ8u5Rdeec775sY5OSaI9EFsDejafMWdu +JLS5YaNv341CogF9BWBehm9ZNx5sagdEqjjFHWFXsapIlamS0RpLjbJWQjBZRzGLVN2 EwRGO39qqJnCoZJsOo7oQTJiCrVamrCWyffaYF0jpqJNCCIAYAFJ/lym5fCKI1Sri+Hv W59NldPd+4jfoK3NsfqhvrwKNOcDfNjvSjF7ZvV/xSuzw5L70LDJf9uEC4v6MxcqfUpx crWg== X-Gm-Message-State: AFuF++lgXUT0oW/hMZ7lUrh0V0RM6OSftCkGfNDojQ7er3e0k+g3pIVR 0x72vlj6jwvItSGRY+vcBi3fWXbizYKPv5e8YDy9YIGKBLEh6wmjlVKpp72pRQ2d9R4JU2VPbE7 AQaKxRtAa6TMmmJCNTw1kTdJSSZtSHOSYlH0JvXw= X-Gm-Gg: AR+sD10C1OCviM24GrQvEgisk048wRyNVNqN2xEj5IBbaXjpIJpLHNehD5LCyGuXxmI lB9J/pk1Izwm/rZGYf2VVXS3J9L/NRHfYikEG+2YWYDOc9Mfg5lEw5p54hy9pT2ZyeK3wvueic2 91NwD5FzXoElt3eCzT1/ZW7ERWHYcD4ivJc9k6wMSy4aRKM+uoAnTBzPXff54oGr0lYJ2XZuyrw cP79hmJrabuH09MyGSV1QTgo5HbavLy5i03zbzUWyh4kQ9Qe1rtc0OZe/9sEjN78SH7Ls/hctyY WrUiKUe7E9KVGcmAsaGAOhQpmL8lOITojx5mFnvZw0T4iBfvPkP9/tnH5qBsI+tjhusLwAeyO75 nTfEcmEt3OLJGoKoYqfaIp6Ys+UtXR0O0xA== X-Received: by 2002:a17:903:4b4b:b0:2cc:d6de:d597 with SMTP id d9443c01a7336-2d5fd6b28b5mr132110345ad.7.1787163708378; Wed, 19 Aug 2026 11:21:48 -0700 (PDT) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20260818170535.3190869-1-daeho43@gmail.com> <6b55a4e9-e4a0-421c-9bb6-98ffc2c915c9@kernel.org> In-Reply-To: <6b55a4e9-e4a0-421c-9bb6-98ffc2c915c9@kernel.org> From: Daeho Jeong Date: Wed, 19 Aug 2026 11:21:33 -0700 X-Gm-Features: AcwNN1UvH1PzLUKVQSWoByYXx3Yn4d0du9izZF08engzNS8Xw3xMjig2Duw5wwY Message-ID: Subject: Re: [f2fs-dev] [PATCH] f2fs: avoid setting SBI_NEED_FSCK on transient resize failure with -EAGAIN To: Chao Yu Cc: linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, kernel-team@android.com, Daeho Jeong Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Aug 18, 2026 at 7:34=E2=80=AFPM Chao Yu wrote: > > On 8/19/26 01:05, Daeho Jeong wrote: > > From: Daeho Jeong > > > > When f2fs_resize_fs() fails due to transient lock contention or retryab= le > > GC failure in free_segment_range() returning -EAGAIN, no filesystem > > metadata has been modified on-disk yet. The filesystem remains complete= ly > > consistent and clean. > > Any way to make sure EAGAIN is from free_segment_range(), in case we retu= rn > EAGAIN from 1) any other places that we may miss to check now or 2) we ch= anged > the code to return EAGAIN in future. Makes sense. In fact, if free_segment_range() fails with ANY error (e.g., -EAGAIN, -ENOMEM, -ERESTARTSYS, etc.), no on-disk superblock or filesystem metadata has been modified yet, and free_segment_range() safely restores all in-memo= ry counters (MAIN_SECS, free_sections) before returning. Therefore, setting SBI_NEED_FSCK is not needed for all errors occurring in free_segment_range(= ). To make this explicit and defensive against any future changes, we can separate the error recovery path with dedicated labels as follows: err =3D free_segment_range(sbi, secs, false); if (err) - goto recover_out; + goto recover_user_blocks; update_sb_metadata(sbi, -secs); ... recover_out: + set_sbi_flag(sbi, SBI_NEED_FSCK); + f2fs_err(sbi, "resize_fs failed, should run fsck to repair!"); +recover_user_blocks: clear_sbi_flag(sbi, SBI_IS_RESIZEFS); if (err) { - set_sbi_flag(sbi, SBI_NEED_FSCK); - f2fs_err(sbi, "resize_fs failed, should run fsck to repair!"); - spin_lock(&sbi->stat_lock); sbi->user_block_count +=3D shrunk_blocks; spin_unlock(&sbi->stat_lock); Thanks, > > Thanks, > > > > > However, the current error recovery path unconditionally sets the > > SBI_NEED_FSCK flag on any error, forcing an unnecessary and time-consum= ing > > fsck.f2fs repair on the subsequent mount/reboot. > > > > Fix this by guarding set_sbi_flag(sbi, SBI_NEED_FSCK) with > > `if (err !=3D -EAGAIN)`, avoiding false-positive filesystem corruption > > flags on transient resize retries. > > > > Signed-off-by: Daeho Jeong > > Signed-off-by: Sunmin Jeong > > --- > > fs/f2fs/gc.c | 6 ++++-- > > 1 file changed, 4 insertions(+), 2 deletions(-) > > > > diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c > > index 192b16ac02f8..787133ee2eb2 100644 > > --- a/fs/f2fs/gc.c > > +++ b/fs/f2fs/gc.c > > @@ -2446,8 +2446,10 @@ int f2fs_resize_fs(struct file *filp, __u64 bloc= k_count) > > recover_out: > > clear_sbi_flag(sbi, SBI_IS_RESIZEFS); > > if (err) { > > - set_sbi_flag(sbi, SBI_NEED_FSCK); > > - f2fs_err(sbi, "resize_fs failed, should run fsck to repai= r!"); > > + if (err !=3D -EAGAIN) { > > + set_sbi_flag(sbi, SBI_NEED_FSCK); > > + f2fs_err(sbi, "resize_fs failed, should run fsck = to repair!"); > > + } > > > > spin_lock(&sbi->stat_lock); > > sbi->user_block_count +=3D shrunk_blocks; >