From nobody Mon Sep 28 21:54:43 2026 Received: from mail-pj1-f48.google.com (mail-pj1-f48.google.com [209.85.216.48]) (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 5F9DD2405EB for ; Mon, 17 Aug 2026 02:27:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786933673; cv=none; b=HoVLYZdjwszphhnJBpp9Y3klw8e1/g0HajlDNqEEcsxRi4VWeRTk4DE8FXyhp4v6R4ATRmVkuwAMAT4YwI3/vXmz4GHSZJBluGTIs+dQHywtFh40wcjtubIN+v0NapysjI5h2xFNZMHowx1m7lfvg68qgjxaSsNcfMpOR41nYKk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786933673; c=relaxed/simple; bh=JwThhU1Y/8TuMKzm1pftmxoYovem0EEICtN7g9/v/98=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=WraFZDhAG3QyDPcCd/J+HdqO61DP0gnWpDjdg0GQi9IsIHuJUG6kwihgC8WmusOavGD2tdC21fS+J1jd7WTN5LFQ1AcXaJtqRBiaErziWv7RIgQfU9rJUQQjMwSp8FE+DKZDvqmvh55S6fdMqnV87g4btE4hfnNEKa+doKlYWz0= 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=luklI7+g; arc=none smtp.client-ip=209.85.216.48 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="luklI7+g" Received: by mail-pj1-f48.google.com with SMTP id 98e67ed59e1d1-38e041ea211so2794219a91.0 for ; Sun, 16 Aug 2026 19:27:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786933672; x=1787538472; 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:content-type; bh=ul2vM3JfxSlWJCZNaogOWLN+q61AuBwPdjD6s+9mX7s=; b=luklI7+gvSxRt6ZtGiUaW2VrthWGBQrfqRKwX9Y84mcFKlGWBRBNPYjBVv88tPnqlg 8h4HVnv2lna4nANZY3MS2Ve0ik/PeYqEltKhQeBOKTj37Vl2qG7mSRuG10zU364pIISU FnQOUDaTsR0ds2LoqEvMpWn6Ma6R0rs8tWQAzAom9kfylKw8dAxr0AWWILloku+Mn6RZ G30XW3+dFwNKP35o7EBvWgLOhmtNURRQgzW7RkLvkqDOLNs4KXMSxjXNlMj0jMgelpnm +PcLpPGJ9F7xsUavCis7QG9haMzz46U0Qc6q5nZTe+uiqNSoixTfxOwtE3zsrFiIFuOE 0uoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786933672; x=1787538472; 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:content-type; bh=ul2vM3JfxSlWJCZNaogOWLN+q61AuBwPdjD6s+9mX7s=; b=iIUctZAO1SN34fEktRrbGLYpPeiEqLyKunO/HqjwvTNdHaKfGTEhnA6TyTBBYUfXRZ c4e7Dt0BdNLZz+XOpgNY9BhUadlMJP3mE2lhSku9K5oa2wQS5iH+rvcjWmeBLt/ge3he 8Z4xWPSijOzVBkb/VQxG7vuKz+JOmeAP8ctOuHHpPZZH4VyFrHEJTuvFzNcbbcWR3ArP rtNGCbcusnQnfhvOzuBAarjZ1j7pDa0UBjwSDpFhVRrC2AR2DPaHThalNXvqa6cbyT8E OMKr6qoLttDqCiimey0UDAP8VdcgxB2XYVlS9n8uM3ZVOwUmPMfYnBQl5qCmabLZErvF QvWA== X-Forwarded-Encrypted: i=1; AHgh+Rq3hYmcqOyL8FwufXNPWjmp3Fx6wUKsYNf8VClXnQTwfedPZGocyqpxWoXtuZmTuD8Hpu9mNKCDzHPaG1A=@vger.kernel.org X-Gm-Message-State: AOJu0YxoY2cMwItAI70HQb3suiqtGkTSWRAvMTp+YJUONf2LR9zs9q0M 2Yjq48x8qQnsNEX+r+w15i02ynaf70QOZkoJGSlFlHkSv28+YKa7CqOs X-Gm-Gg: AR+sD11QtQ0nVMRTggVOjzAVBTjyFPd2YC1QlEwi8zB7oHVCQ1tMYsFInshMfLDOm9T 4TDqbZikfC6YEd4vUzYuy8rcf8mHoBUq4k6omzqtuTs/i5W+6Uwj2jLruGW8Tvr6QOUYlcUy686 eF3Hyy8ieQ0yRV6XI+aPKIr2WoXHoJbDT3B55A14ABqP77rMWJxiRvvP2ZvHtTItVAWOVzPiYJ5 571+LbcV7AhmM24Dj/HYuKF3PZ8fF/D1Xiex3L3gYUGD71gKtZh3fJBch8HgC2pNTPs8eCi7Hag qr1YjwnP+v/A2lEpkEMb5edsK3t3KONYchWcci7Cm+Y13DShb2mpS10r4wWOI7vCdH8w+cw1day i8do3QU8meD8eiTjwSWPqKBpiAoEKezyi6YjNdLJXV9dL7BVZ1+wY9m1wf9C27sezznj+NHUyJr 9Gj4NzyTi9haWfwKGwO3piCnM1fLvGMKP5F7zU3/5seAcE2Gax0A1sbRWbn3Ite9h9OGrdkXjs5 fBWDWlvaBs= X-Received: by 2002:a17:90b:1850:b0:37f:bfd6:8b40 with SMTP id 98e67ed59e1d1-3933b751fecmr22700949a91.5.1786933671569; Sun, 16 Aug 2026 19:27:51 -0700 (PDT) Received: from osman.mioffice.cn ([43.224.245.178]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3954d2b8080sm324315a91.4.2026.08.16.19.27.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 16 Aug 2026 19:27:51 -0700 (PDT) From: Zhan Xusheng X-Google-Original-From: Zhan Xusheng To: Jaegeuk Kim , Chao Yu , Sunmin Jeong Cc: Sungjong Seo , Yeongjin Gil , Yunji Kang , zhanxusheng@xiaomi.com, linux-f2fs-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org, Zhan Xusheng , stable@vger.kernel.org Subject: [PATCH] f2fs: fix i_size when pinned fallocate partially fails Date: Mon, 17 Aug 2026 10:27:23 +0800 Message-ID: <20260817022723.3324123-1-zhanxusheng@xiaomi.com> X-Mailer: git-send-email 2.43.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" From: Zhan Xusheng From: Zhan Xusheng Commit 4275b59673eb ("f2fs: fix to round down start offset of fallocate for pin file") moved the allocation loop's start down to a section boundary, but the error path still converts @expanded against @pg_start, which holds the unrounded start. @pg_start exists for that conversion: commit 88f2cfc5fa90 ("f2fs: fix to update last i_size if fallocate partially succeeds") added it as an immutable base because map.m_lblk moves every round. Each round now maps exactly sec_blks blocks starting from rounddown(pg_start, sec_blks), so pg_start + expanded overshoots the last allocated block by pg_start % sec_blks, and a partial failure leaves i_size covering a tail that was never allocated. Nothing corrects that afterwards either, since file_dont_truncate() has already cleared FADVISE_TRUNC_BIT. Keep @pg_start pointing at where allocation actually begins. Fixes: 4275b59673eb ("f2fs: fix to round down start offset of fallocate for= pin file") Cc: stable@vger.kernel.org Signed-off-by: Zhan Xusheng --- fs/f2fs/file.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 4b52c56d71f0..cc0d2b8c4684 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -1919,8 +1919,9 @@ static int f2fs_expand_inode_data(struct inode *inode= , loff_t offset, block_t sec_len; =20 if (map.m_lblk % sec_blks) { - map.m_lblk =3D rounddown(map.m_lblk, sec_blks); - map.m_len =3D pg_end - map.m_lblk; + pg_start =3D rounddown(map.m_lblk, sec_blks); + map.m_lblk =3D pg_start; + map.m_len =3D pg_end - pg_start; if (off_end) map.m_len++; } --=20 2.43.0