Messages in this thread Patch in this message | | | Subject | Re: [f2fs-dev] [PATCH v2] f2fs: restrict write IO alignment condition | From | Kinglong Mee <> | Date | Mon, 13 Mar 2017 21:45:08 +0800 |
| |
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 <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; > + > 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, >
| |