From nobody Tue Dec 16 07:27:36 2025 Received: from SHSQR01.spreadtrum.com (unknown [222.66.158.135]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 20D5215FA8A for ; Wed, 29 May 2024 09:47:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=222.66.158.135 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716976073; cv=none; b=clj9id9jXiRPB8ZJYRQgCzocE7fQUHrHIOs0G+8L88opD5MRSd8ZVuX6lX44EpgCO9fPbQy96ryoduNaycfaVOGPGfmFCBJKxiimYBLYrkpbMgCOxqbHMyh6Z2PHra/9se+dMM4p0a51jlGB6WakuPfpg3iSx4XH5uMjWdJG/9k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716976073; c=relaxed/simple; bh=Ic2kBUoF4L1dbNFEYy5kzmUUSyvGI4DcVcuyQhMnU+c=; h=From:To:CC:Subject:Date:Message-ID:MIME-Version:Content-Type; b=jYwyuEAsB1h8Vo84cYL2joohRsSpLIseqChVho2VF2nU/72rTwgqY5Kon/DZsLsmZRJzou5HAzufsWfAfDKCHQA0XlRQdbDrp0E0BkDN0SnywUWEHI0GUonu4aloMLKsF3juBpPD2XhUSaS/U6rRpIIkRc7jQR19HIQRlJojTVM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=unisoc.com; spf=pass smtp.mailfrom=unisoc.com; arc=none smtp.client-ip=222.66.158.135 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=unisoc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=unisoc.com Received: from dlp.unisoc.com ([10.29.3.86]) by SHSQR01.spreadtrum.com with ESMTP id 44T9lHNh081025; Wed, 29 May 2024 17:47:17 +0800 (+08) (envelope-from Zhiguo.Niu@unisoc.com) Received: from SHDLP.spreadtrum.com (bjmbx02.spreadtrum.com [10.0.64.8]) by dlp.unisoc.com (SkyGuard) with ESMTPS id 4Vq4FZ3SBdz2QGMfs; Wed, 29 May 2024 17:43:30 +0800 (CST) Received: from bj08434pcu.spreadtrum.com (10.0.73.87) by BJMBX02.spreadtrum.com (10.0.64.8) with Microsoft SMTP Server (TLS) id 15.0.1497.23; Wed, 29 May 2024 17:47:14 +0800 From: Zhiguo Niu To: , CC: , , , , , Subject: [PATCH v2] f2fs: fix to avoid use SSR allocate when do defragment Date: Wed, 29 May 2024 17:47:00 +0800 Message-ID: <1716976020-28757-1-git-send-email-zhiguo.niu@unisoc.com> X-Mailer: git-send-email 1.9.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SHCAS03.spreadtrum.com (10.0.1.207) To BJMBX02.spreadtrum.com (10.0.64.8) X-MAIL: SHSQR01.spreadtrum.com 44T9lHNh081025 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" SSR allocate mode will be used when doing file defragment if ATGC is working at the same time, that is because set_page_private_gcing may make CURSEG_ALL_DATA_ATGC segment type got in f2fs_allocate_data_block when defragment page is writeback, which may cause file fragmentation is worse. A file with 2 fragmentations is changed as following after defragment: Reviewed-by: Chao Yu ----------------file info------------------- sensorsdata : -------------------------------------------- dev [254:48] ino [0x 3029 : 12329] mode [0x 81b0 : 33200] nlink [0x 1 : 1] uid [0x 27e6 : 10214] gid [0x 27e6 : 10214] size [0x 242000 : 2367488] blksize [0x 1000 : 4096] blocks [0x 1210 : 4624] -------------------------------------------- file_pos start_blk end_blk blks 0 11361121 11361207 87 356352 11361215 11361216 2 364544 11361218 11361218 1 368640 11361220 11361221 2 376832 11361224 11361225 2 385024 11361227 11361238 12 434176 11361240 11361252 13 487424 11361254 11361254 1 491520 11361271 11361279 9 528384 3681794 3681795 2 536576 3681797 3681797 1 540672 3681799 3681799 1 544768 3681803 3681803 1 548864 3681805 3681805 1 552960 3681807 3681807 1 557056 3681809 3681809 1 Signed-off-by: Zhiguo Niu --- v2: check FI_OPU_WRITE without adding new FI flag. --- --- fs/f2fs/segment.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c index 7caf20a..f0c0906 100644 --- a/fs/f2fs/segment.c +++ b/fs/f2fs/segment.c @@ -3482,7 +3482,8 @@ static int __get_segment_type_6(struct f2fs_io_info *= fio) if (page_private_gcing(fio->page)) { if (fio->sbi->am.atgc_enabled && (fio->io_type =3D=3D FS_DATA_IO) && - (fio->sbi->gc_mode !=3D GC_URGENT_HIGH)) + (fio->sbi->gc_mode !=3D GC_URGENT_HIGH) && + !is_inode_flag_set(inode, FI_OPU_WRITE)) return CURSEG_ALL_DATA_ATGC; else return CURSEG_COLD_DATA; --=20 1.9.1