Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752414AbdCMUGI (ORCPT ); Mon, 13 Mar 2017 16:06:08 -0400 Received: from mail.kernel.org ([198.145.29.136]:40556 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751740AbdCMUF6 (ORCPT ); Mon, 13 Mar 2017 16:05:58 -0400 Date: Mon, 13 Mar 2017 13:05:44 -0700 From: Jaegeuk Kim To: Chao Yu Cc: linux-f2fs-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org, chao@kernel.org Subject: Re: [PATCH v2] f2fs: restrict write IO alignment condition Message-ID: <20170313200544.GE41055@jaegeuk.local> References: <20170313130216.108395-1-yuchao0@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170313130216.108395-1-yuchao0@huawei.com> User-Agent: Mutt/1.7.0 (2016-08-17) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1590 Lines: 54 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 > --- > 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