On 2024/12/4 11:31, Yongpeng Yang wrote:
In SSR mode, the segment selected for allocation might be the same as
the target segment of the GC triggered by ioctl, resulting in the GC
moving the CURSEG_I(sbi, type)->segno.
Thread A                                Thread B or Thread A
- f2fs_ioc_gc_range
  - __f2fs_ioc_gc_range(.victim_segno=segno#N)
   - f2fs_gc
    - __get_victim
     - f2fs_get_victim
     : segno#N is valid, return segno#N as source segment of GC
                                        - f2fs_allocate_data_block
                                                - need_new_seg
                                                - get_ssr_segment
                                                - f2fs_get_victim
                                                : get segno #N as destination 
segment
                                                - change_curseg

Fixes: e066b83c9b40 ("f2fs: add ioctl to flush data from faster device to cold 
area")
Signed-off-by: Yongpeng Yang <yangyongpe...@oppo.com>

Reviewed-by: Chao Yu <c...@kernel.org>

Thanks,


_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to