Messages in this thread | | | From | Daeho Jeong <> | Date | Fri, 10 Sep 2021 08:24:42 -0700 | Subject | Re: [f2fs-dev] [PATCH v4] f2fs: introduce fragment allocation mode mount option |
| |
On Fri, Sep 10, 2021 at 7:34 AM Daeho Jeong <daeho43@gmail.com> wrote: > > On Thu, Sep 9, 2021 at 4:50 PM Chao Yu <chao@kernel.org> wrote: > > > > On 2021/9/8 2:12, Daeho Jeong wrote: > > > On Fri, Sep 3, 2021 at 11:45 PM Chao Yu <chao@kernel.org> 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. > > > > I understand we need a new fragment_remained_hole variable in segment structure. > But, I mean.. How can we pass over the left hole size from the > previous segment to the next segment? >
I mean we don't know which segment will be the next segment, do we?
> Thanks, > > > Thanks, > > > > > > > > Thanks, > > > > > >> Thanks, > > >> > > >>>
| |