Patch "f2fs: fix to avoid use SSR allocate when do defragment" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    f2fs: fix to avoid use SSR allocate when do defragment

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     f2fs-fix-to-avoid-use-ssr-allocate-when-do-defragmen.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit f73481308a0fbe8393969f8daa0d85943a0dd576
Author: Zhiguo Niu <zhiguo.niu@xxxxxxxxxx>
Date:   Wed May 29 17:47:00 2024 +0800

    f2fs: fix to avoid use SSR allocate when do defragment
    
    [ Upstream commit 21327a042dd94bc73181d7300e688699cb1f467e ]
    
    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:
    
    ----------------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 <zhiguo.niu@xxxxxxxxxx>
    Reviewed-by: Chao Yu <chao@xxxxxxxxxx>
    Signed-off-by: Jaegeuk Kim <jaegeuk@xxxxxxxxxx>
    Stable-dep-of: 8cb1f4080dd9 ("f2fs: assign CURSEG_ALL_DATA_ATGC if blkaddr is valid")
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index b059b02fc179d..d8b1980df52d6 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -3359,7 +3359,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 == FS_DATA_IO) &&
-				(fio->sbi->gc_mode != GC_URGENT_HIGH))
+				(fio->sbi->gc_mode != GC_URGENT_HIGH) &&
+				!is_inode_flag_set(inode, FI_OPU_WRITE))
 				return CURSEG_ALL_DATA_ATGC;
 			else
 				return CURSEG_COLD_DATA;




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux