Received: by 10.223.164.221 with SMTP id h29csp3346035wrb; Mon, 30 Oct 2017 20:34:54 -0700 (PDT) X-Google-Smtp-Source: ABhQp+RwqDfslRPW1ANoI1V237k2HFcNdTIRsiVnLi9ltWmRUOv18069SZvulOr8f70s/CjGBQ90 X-Received: by 10.98.8.212 with SMTP id 81mr565345pfi.193.1509420894622; Mon, 30 Oct 2017 20:34:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509420894; cv=none; d=google.com; s=arc-20160816; b=i4Kl8hASMDBSKBz9ZGDrCrJUotVg32d6rA6dI82eG2038XLBvkfIE4V8sfpRoKf73/ SsIr0C6IhqVrWGoS3KpPAlALApu2EawfS/PG6JzzOqZ8px3207qBg1FmIYNXP92e+XDd zpxMB8oeLsUsKwmqvtZ7OvLHetvLzAHz5o42KHgQrX2+DFWmxu4AV9yvP2ofInooFMjj vh30dlE54CZJQacOcuNt7wczncEEzW6vAPnRv0fLCOakD4cFLdafpEfI5acmvXH1N6tP 7I3BI7q5pZvQx8eiZHzNP+DcwLFSvqCefHIsntsFp3DpTK3J1rdojZY+9Rmr3osXJAbT fBBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-language :content-transfer-encoding:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:arc-authentication-results; bh=NcEOegG8tXH27f5ivRmpM6YNvNO4MinsXEhZj5ksANc=; b=VbDbMIY05s08yP45MQHZm0cey9RUQjDD4/NqaYyONXvOe5DPMZ2vmncvcIzgIzLtn0 koZY26ALpeI+kAnvm9R0o9xERNMyOM1RoBJ7LfQ1ChUIBHBhWmChUnOIY2kDoa4+p86+ rF3sZKLeFweh5q/ICZ5eq3s8ncfnv4qoMSI8YIB2riUi6KMW5BxQTaJDnx0wr5LqdTX1 nVgDxAyAgBHxCSIgqUUzMgiV9HZp1yl6ocsDIiYGMNruXxzoRbbhU/Ewsh1/pp5BpdS8 87Jwwvp2I+W3N8sh+4LzLd3WNu/c1JExvmIQr9uX+mUZ0iFA9gIS+OKZdjQsRwiXwNwA AKGg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p25si456518pgc.190.2017.10.30.20.34.41; Mon, 30 Oct 2017 20:34:54 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752712AbdJaDdq (ORCPT + 99 others); Mon, 30 Oct 2017 23:33:46 -0400 Received: from szxga04-in.huawei.com ([45.249.212.190]:9483 "EHLO szxga04-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752512AbdJaDdo (ORCPT ); Mon, 30 Oct 2017 23:33:44 -0400 Received: from 172.30.72.59 (EHLO DGGEMS412-HUB.china.huawei.com) ([172.30.72.59]) by dggrg04-dlp.huawei.com (MOS 4.4.6-GA FastPath queued) with ESMTP id DKB02955; Tue, 31 Oct 2017 11:33:22 +0800 (CST) Received: from [127.0.0.1] (10.111.220.140) by DGGEMS412-HUB.china.huawei.com (10.3.19.212) with Microsoft SMTP Server id 14.3.361.1; Tue, 31 Oct 2017 11:31:51 +0800 Subject: Re: [f2fs-dev] [PATCH v2] f2fs: add bug_on when f2fs_gc even fails to get one victim To: Chao Yu , Chao Yu , , CC: , , , References: <1507729864-118702-1-git-send-email-yunlong.song@huawei.com> <1507901500-162168-1-git-send-email-yunlong.song@huawei.com> <7f05bef6-929f-ea7b-9d60-e9a6d8e70d3c@kernel.org> <31f2c1b6-58ee-bb52-0b75-f6172b6f801f@huawei.com> <7eb77c60-ed9b-2440-cc46-55c2eb8573d1@huawei.com> <9d750ff6-7b71-562b-ea24-9faad7dd10ae@huawei.com> From: Yunlong Song Message-ID: <7b1da4b4-c5b0-df0f-05a6-8b29db951073@huawei.com> Date: Tue, 31 Oct 2017 11:30:50 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 In-Reply-To: <9d750ff6-7b71-562b-ea24-9faad7dd10ae@huawei.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US X-Originating-IP: [10.111.220.140] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020203.59F7EF02.0039,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=0.0.0.0, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: cb71ddcf701636025218b0a400e6285f Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org So it seems it is really useful to add this bug_on in gc. On 2017/10/31 11:17, Chao Yu wrote: > On 2017/10/31 9:32, Yunlong Song wrote: >> I think there may be bugs somewhere, since no victim is selected but it >> really needs gc. >> What is the size of the data image? > I have providered the testcase, could you check that? > >>>>> I can hit this bugon with generic/015 of fstest easily, could have a look at >>>>> this? > Anyway, I have looked into this issue at last weekend, forgot to post related > info. It shows that if the image size is very small, e.g. 50MB, current > segment will encroach overprov and reserved segments, so free segment count will > always be small than reserved segment threshold, result in triggering bugon in > FGGC. > > [SB: 1] [CP: 2] [SIT: 2] [NAT: 2] [SSA: 1] [MAIN: 17(OverProv:14 Resv:12)] > > - Valid: 6 > - Dirty: 0 > - Prefree: 0 > - Free: 11 (11) > > I modify mkfs.f2fs forcedly as below, which could let generic/015 passed: > > diff --git a/mkfs/f2fs_format.c b/mkfs/f2fs_format.c > index 8a821d3a1747..774bbef73d9a 100644 > --- a/mkfs/f2fs_format.c > +++ b/mkfs/f2fs_format.c > @@ -371,6 +371,12 @@ static int f2fs_prepare_super_block(void) > (2 * (100 / c.overprovision + 1) + 6) > * c.segs_per_sec; > > + if (get_sb(segment_count_main) * (100 - c.overprovision) / 100 - > + c.reserved_segments < 6) { > + c.overprovision = 50; > + c.reserved_segments = get_sb(segment_count_main) - 6 * 2; > + } > + > uuid_generate(sb->uuid); > > /* precompute checksum seed for metadata */ > > Thanks, > >> On 2017/10/16 11:25, Chao Yu wrote: >>> On 2017/10/14 20:34, Yunlong Song wrote: >>>> Do you mean check out-of-space test? I have tried that but no bugon. >>> Yes, test recent f2fs codes with kernel 4.13.0-rc1+ in VM, FYI: >>> >>> kernel BUG at gc.c:1034! >>> invalid opcode: 0000 [#1] SMP >>> Hardware name: Xen HVM domU, BIOS 4.1.2_115-900.260_ 11/06/2015 >>> RIP: 0010:f2fs_gc+0x6e5/0x6f0 [f2fs] >>> RSP: 0018:ffffc90004af7b40 EFLAGS: 00010202 >>> RAX: ffff8801b0a15940 RBX: 0000000000000000 RCX: 0000000000000000 >>> RDX: ffff8801b0a15940 RSI: ffff8801978d5f00 RDI: ffff880128148048 >>> RBP: ffffc90004af7c38 R08: ffff8801978d5f00 R09: 0000000000000003 >>> R10: 0000000000000003 R11: ffff8800060703a0 R12: 0000000000000000 >>> R13: 0000000000000000 R14: 0000000000000001 R15: ffff8801b4279800 >>> FS: 00007f23493cb740(0000) GS:ffff880216f00000(0000) knlGS:0000000000000000 >>> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 >>> CR2: 00007ffd05402ff8 CR3: 00000001bffb3000 CR4: 00000000001406e0 >>> Call Trace: >>> f2fs_balance_fs+0x123/0x140 [f2fs] >>> f2fs_create+0x130/0x240 [f2fs] >>> path_openat+0xee7/0x1360 >>> do_filp_open+0x7e/0xd0 >>> do_sys_open+0x115/0x1f0 >>> SyS_open+0x1e/0x20 >>> do_syscall_64+0x6e/0x160 >>> entry_SYSCALL64_slow_path+0x25/0x25 >>> >>> Thanks, >>> >>>> On 2017/10/14 8:17, Chao Yu wrote: >>>>> On 2017/10/13 21:31, Yunlong Song wrote: >>>>>> This can help us to debug on some corner case. >>>>> I can hit this bugon with generic/015 of fstest easily, could have a look at >>>>> this? >>>>> >>>>> Thanks, >>>>> >>>>>> Signed-off-by: Yunlong Song >>>>>> Signed-off-by: Chao Yu >>>>>> --- >>>>>> fs/f2fs/gc.c | 6 +++++- >>>>>> 1 file changed, 5 insertions(+), 1 deletion(-) >>>>>> >>>>>> diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c >>>>>> index 197ebf4..2b03202 100644 >>>>>> --- a/fs/f2fs/gc.c >>>>>> +++ b/fs/f2fs/gc.c >>>>>> @@ -986,6 +986,7 @@ int f2fs_gc(struct f2fs_sb_info *sbi, bool sync, >>>>>> .ilist = LIST_HEAD_INIT(gc_list.ilist), >>>>>> .iroot = RADIX_TREE_INIT(GFP_NOFS), >>>>>> }; >>>>>> + bool need_fggc = false; >>>>>> >>>>>> trace_f2fs_gc_begin(sbi->sb, sync, background, >>>>>> get_pages(sbi, F2FS_DIRTY_NODES), >>>>>> @@ -1018,8 +1019,10 @@ int f2fs_gc(struct f2fs_sb_info *sbi, bool sync, >>>>>> if (ret) >>>>>> goto stop; >>>>>> } >>>>>> - if (has_not_enough_free_secs(sbi, 0, 0)) >>>>>> + if (has_not_enough_free_secs(sbi, 0, 0)) { >>>>>> gc_type = FG_GC; >>>>>> + need_fggc = true; >>>>>> + } >>>>>> } >>>>>> >>>>>> /* f2fs_balance_fs doesn't need to do BG_GC in critical path. */ >>>>>> @@ -1028,6 +1031,7 @@ int f2fs_gc(struct f2fs_sb_info *sbi, bool sync, >>>>>> goto stop; >>>>>> } >>>>>> if (!__get_victim(sbi, &segno, gc_type)) { >>>>>> + f2fs_bug_on(sbi, !total_freed && need_fggc); >>>>>> ret = -ENODATA; >>>>>> goto stop; >>>>>> } >>>>>> >>>>> . >>>>> >>> . >>> > > . > -- Thanks, Yunlong Song From 1582741626989262562@xxx Tue Oct 31 03:20:39 +0000 2017 X-GM-THRID: 1580969854381445046 X-Gmail-Labels: Inbox,Category Forums