From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751514AbcGGE3L (ORCPT ); Thu, 7 Jul 2016 00:29:11 -0400 Received: from mail.kernel.org ([198.145.29.136]:46132 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751116AbcGGE3J (ORCPT ); Thu, 7 Jul 2016 00:29:09 -0400 Subject: Re: [f2fs-dev] [PATCH 1/2] f2fs: fix to return correct trimmed block number in FITRIM interface To: Chao Yu , jaegeuk@kernel.org References: <20160630084248.57469-1-yuchao0@huawei.com> Cc: linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net From: Chao Yu Message-ID: Date: Thu, 7 Jul 2016 12:29:02 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.1.1 MIME-Version: 1.0 In-Reply-To: <20160630084248.57469-1-yuchao0@huawei.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi all, I think this patch should be wrong, since during fstrim, we should not issue discard for prefree segment redundantly. So, Jaegeuk, could you please drop this patch in your branch? Sorry for the noise. Thanks, On 2016/6/30 16:42, Chao Yu wrote: > During tiggering fstrim, in case of issuing discard for prefree segments, > we miss acclumulating trimmed block number which will be return to user. > Fix it. > > Signed-off-by: Chao Yu > --- > fs/f2fs/segment.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c > index 6d16ecf..5dc14d6 100644 > --- a/fs/f2fs/segment.c > +++ b/fs/f2fs/segment.c > @@ -732,15 +732,20 @@ void clear_prefree_segments(struct f2fs_sb_info *sbi, struct cp_control *cpc) > if (!test_opt(sbi, LFS) || sbi->segs_per_sec == 1) { > f2fs_issue_discard(sbi, START_BLOCK(sbi, start), > (end - start) << sbi->log_blocks_per_seg); > + cpc->trimmed += > + (end - start) << sbi->log_blocks_per_seg; > continue; > } > next: > secno = GET_SECNO(sbi, start); > start_segno = secno * sbi->segs_per_sec; > if (!IS_CURSEC(sbi, secno) && > - !get_valid_blocks(sbi, start, sbi->segs_per_sec)) > + !get_valid_blocks(sbi, start, sbi->segs_per_sec)) { > f2fs_issue_discard(sbi, START_BLOCK(sbi, start_segno), > sbi->segs_per_sec << sbi->log_blocks_per_seg); > + cpc->trimmed += > + sbi->segs_per_sec << sbi->log_blocks_per_seg; > + } > > start = start_segno + sbi->segs_per_sec; > if (start < end) >