Messages in this thread | | | Date | Mon, 13 Mar 2017 13:05:44 -0700 | From | Jaegeuk Kim <> | Subject | Re: [PATCH v2] f2fs: restrict write IO alignment condition |
| |
On 03/13, Chao Yu wrote: > We should only align start offset of bio with defined IO_SIZE for below > conditions: > a. mode=lfs mount option > b. write IOs > c. Out-place-update > d. non-meta pages > > Signed-off-by: Chao Yu <yuchao0@huawei.com> > --- > fs/f2fs/data.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c > index 1375fef11146..53fe79c70406 100644 > --- a/fs/f2fs/data.c > +++ b/fs/f2fs/data.c > @@ -190,6 +190,9 @@ static inline void __submit_bio(struct f2fs_sb_info *sbi, > current->plug && (type == DATA || type == NODE)) > blk_finish_plug(current->plug); > > + if (!test_opt(sbi, LFS)) > + goto submit_io;
The parse_options in fill_super checks this.
> + > if (type != DATA && type != NODE) > goto submit_io; > > @@ -395,11 +398,12 @@ int f2fs_submit_page_mbio(struct f2fs_io_info *fio) > __submit_merged_bio(io); > alloc_new: > if (io->bio == NULL) { > - if ((fio->type == DATA || fio->type == NODE) && > + if (test_opt(sbi, LFS) && > + !is_read && (fio->type == DATA || fio->type == NODE) &&
The missing case is !is_read, here? But, actually, DATA and NODE don't issue any read commands at all.
Thanks,
> fio->new_blkaddr & F2FS_IO_SIZE_MASK(sbi)) { > err = -EAGAIN; > - if (!is_read) > - dec_page_count(sbi, WB_DATA_TYPE(bio_page)); > + f2fs_bug_on(sbi, fio->new_blkaddr == fio->old_blkaddr); > + dec_page_count(sbi, WB_DATA_TYPE(bio_page)); > goto out_fail; > } > io->bio = __bio_alloc(sbi, fio->new_blkaddr, > -- > 2.8.2.295.g3f1c1d0
| |