From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932161AbcF3Inc (ORCPT ); Thu, 30 Jun 2016 04:43:32 -0400 Received: from szxga02-in.huawei.com ([119.145.14.65]:64568 "EHLO szxga02-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932069AbcF3InO (ORCPT ); Thu, 30 Jun 2016 04:43:14 -0400 From: Chao Yu To: CC: , , Chao Yu Subject: [PATCH 1/2] f2fs: fix to return correct trimmed block number in FITRIM interface Date: Thu, 30 Jun 2016 16:42:47 +0800 Message-ID: <20160630084248.57469-1-yuchao0@huawei.com> X-Mailer: git-send-email 2.8.2.311.gee88674 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.120.216.130] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A090206.5774DB99.005A,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=0.0.0.0, so=2013-06-18 04:22:30, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: fd1eed4df25acb34323aabc0ed2bcd98 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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) -- 2.8.2.311.gee88674