On 3/13/2017 21:02, 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 <yuch...@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; > + > if (type != DATA && type != NODE) > goto submit_io;
Is the position of checking LFS here right? I have a plan of change the code order as, diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index 2ab5ca0..698dbf3 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -186,13 +186,12 @@ static inline void __submit_bio(struct f2fs_sb_info *sbi, if (!is_read_io(bio_op(bio))) { unsigned int start; - if (f2fs_sb_mounted_blkzoned(sbi->sb) && - current->plug && (type == DATA || type == NODE)) - blk_finish_plug(current->plug); - if (type != DATA && type != NODE) goto submit_io; + if (f2fs_sb_mounted_blkzoned(sbi->sb) && current->plug) + blk_finish_plug(current->plug); + start = bio->bi_iter.bi_size >> F2FS_BLKSIZE_BITS; start %= F2FS_IO_SIZE(sbi); thanks, Kinglong Mee > > @@ -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) && > 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, > ------------------------------------------------------------------------------ Announcing the Oxford Dictionaries API! The API offers world-renowned dictionary content that is easy and intuitive to access. Sign up for an account today to start using our lexical data to power your apps and projects. Get started today and enter our developer competition. http://sdm.link/oxford _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel