On 2021/9/8 2:12, Daeho Jeong wrote:
On Fri, Sep 3, 2021 at 11:45 PM Chao Yu <[email protected]> wrote:

On 2021/9/4 12:40, Daeho Jeong wrote:
As a per curseg field.

Maybe, we run into the same race condition issue you told before for
fragment_remained_chunk.
Could you clarify this more?

e.g.

F2FS_OPTION(sbi).fs_mode = FS_MODE_FRAGMENT_FIXED_BLK
fragment_chunk_size = 384
fragment_hole_size = 384

When creating hole:

- f2fs_allocate_data_block
    - __refresh_next_blkoff
      chunk locates in [0, 383] of current segment
      seg->next_blkoff = 384
      sbi->fragment_remained_chunk = 0
      then we will reset sbi->fragment_remained_chunk to 384
      and move seg->next_blkoff forward to 768 (384 + 384)
    - __has_curseg_space() returns false
    - allocate_segment() allocates new current segment

So, for such case that hole may cross two segments, hole size may be truncated
to left size of previous segment.

First, sbi->fragment_remained_chunk should be seg->fragment_remained_chunk.

Oh, correct.

I understand what you mean, so you mean we need to take the leftover
"hole" size over to the next segment?
In the example, the leftover hole size will be (384 - (512-384)). Do
you want to take this over to the next segment?

Yes, the left 256 block-sized hole should be created before next chunk
in next opened segment.


Chao,

Do you have any decent idea to pass the left hole size to the next
segment which will be allocated?

Daeho,

I guess we can record left hole size in seg->fragment_remained_hole.

Thanks,


Thanks,

Thanks,




_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to