Received: by 10.223.164.202 with SMTP id h10csp386958wrb; Fri, 17 Nov 2017 02:14:59 -0800 (PST) X-Google-Smtp-Source: AGs4zMYMlHPMXEKYAU5pMyAY1aisS+t5SL/ExF8tQHzPUkXqFhFexGY6hvF8plPVV75igUiInFtp X-Received: by 10.99.180.73 with SMTP id n9mr4567875pgu.373.1510913699691; Fri, 17 Nov 2017 02:14:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510913699; cv=none; d=google.com; s=arc-20160816; b=qsNzKTXFLfsH+OW3reg6fFWbuLM4yyehV5Jiepo6NZEQIKEL0QtkDgUar10X+KmbJ1 ZbXJpJWAVfupMmPcjyRs6YRAXLp+OVWif03mGQLq4l6zJvqtZtMgzmOHxYxp1yunGAeI OiM9wA7mDBgPJXhjlNBgYpGFj8zYx4AwYdPY7F6aydQJATTbQ5t5YA1bbfhLPLqzCT1C e/+3hbUbYtQPxag7xYkEktsIQINwoioMk6wYvwi4+GPxO0mXbUdiduhsSid15WMOxzWb wZbUMYiboLMJpPhgHIavdY3omdfkcMJtwUClozkD+QdqRYuWMObTeo8IhXupDqBpr0Ah DT0g== 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=WbWOWfjl6VX3abBznYaTmcZrI7Vxzwcy3qDxinJOK88=; b=JdB64IG+IR5NOsfFw4qBAKKsdigHooeJbnvYy+3A3uPNNYywlrzBh34Ofd2iTBNW4J TMGypCkcZF/YUf0qGKQs+huSdBmeMS2vCS7FotAfby9tgRlRbOrNlC8L9iDl0hKJC8UX NYJa/nmd63ak+845WK0BlOwoZp4wPVfbragRJ5ZntaDm2LeI6nRsfSyLpRkJa9ieNMHm llz+k+E8Nl0k6Vfen+7S9vypDnKou1lisve+552dLBwnvZWtFUYuRHuexdRlCkjUYQed Qxjf4GYCBaT5EGbajHIAc4ojadu3vN+7hVKKYSScPedO9kfrfKuhFsJCKxo6gXUF/59x Lb1g== 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 43si2592785plc.469.2017.11.17.02.14.46; Fri, 17 Nov 2017 02:14:59 -0800 (PST) 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 S1756457AbdKQDbJ (ORCPT + 91 others); Thu, 16 Nov 2017 22:31:09 -0500 Received: from szxga04-in.huawei.com ([45.249.212.190]:10940 "EHLO szxga04-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756395AbdKQDbD (ORCPT ); Thu, 16 Nov 2017 22:31:03 -0500 Received: from 172.30.72.58 (EHLO DGGEMS405-HUB.china.huawei.com) ([172.30.72.58]) by dggrg04-dlp.huawei.com (MOS 4.4.6-GA FastPath queued) with ESMTP id DKZ70688; Fri, 17 Nov 2017 11:30:52 +0800 (CST) Received: from [127.0.0.1] (10.111.220.140) by DGGEMS405-HUB.china.huawei.com (10.3.19.205) with Microsoft SMTP Server id 14.3.361.1; Fri, 17 Nov 2017 11:30:43 +0800 Subject: Re: [PATCH] f2fs: let f2fs also gc atomic file to avoid loop gc To: Chao Yu , , , CC: , , , , References: <1510108497-58331-1-git-send-email-yunlong.song@huawei.com> <239f770e-53f0-69c6-fc1d-67aeb9a1065a@huawei.com> <383339b7-528d-3085-1399-1f1694178c15@huawei.com> <415c8c26-498e-b3f6-2907-fc1ca8c63ad9@huawei.com> From: Yunlong Song Message-ID: <05a5bbc0-c54d-8460-bf1a-678357778360@huawei.com> Date: Fri, 17 Nov 2017 11:30:04 +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: <415c8c26-498e-b3f6-2907-fc1ca8c63ad9@huawei.com> Content-Type: text/plain; charset="windows-1252"; 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.0A020202.5A0E57EC.00E2,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: 98205335c7ba22f4eaa5a6bd33a4556d Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org How about add file_write_and_wait_range in __write_node_page as following: if (atomic && !test_opt(sbi, NOBARRIER)) { file_write_and_wait_range(file, 0, LLONG_MAX); fio.op_flags |= REQ_PREFLUSH | REQ_FUA; } The all the GCed data will be flushed to non-volatile before last node write with REQ_PREFLUSH | REQ_FUA. On 2017/11/17 11:20, Chao Yu wrote: > On 2017/11/17 11:04, Yunlong Song wrote: >> The atomic commit will trigger: >> -f2fs_do_sync_file(filp, 0, LLONG_MAX, 0, true) >> -file_write_and_wait_range(file, 0, LLONG_MAX) >> -fsync_node_pages >> -__write_node_page >> -REQ_PREFLUSH | REQ_FUA >> >> So data is flushed to non-volatile before last node write with > REQ_PREFLUSH | REQ_FUA, > I mean GCed data. > > - file_write_and_wait_range > - move_data_block > - f2fs_submit_page_write > - f2fs_update_data_blkaddr > - set_page_dirty > - fsync_node_pages > > Thanks, > >> we do not need to worry about the inconsistent problem. Right? >> >> On 2017/11/17 10:49, Chao Yu wrote: >>> On 2017/11/17 8:58, Yunlong Song wrote: >>>> Is there any problem if just deleting the judgement condition in this patch? >>> IIRC, dirty node comes from data segment GC can be writebacked & flushed during >>> atomic commit, but related data will still be in inner bio cache, after later >>> SPOR, data would be inconsistent. >>> >>> Thanks, >>> >>>> On 2017/11/8 17:28, Chao Yu wrote: >>>>> On 2017/11/8 10:34, Yunlong Song wrote: >>>>>> If some files are opened with atomic flag and have not commited yet, at >>>>>> the same time, if all the target victim segments have at least one page >>>>>> of these atomic files, then f2fs gc will fail to do gc and hangs in the >>>>>> process of go to gc_more, since gc_date_segment will not move any data >>>>>> and get_valid_blocks will never be 0, then do_garbage_collect will >>>>>> always return 0. >>>>> Oh, I added this judgment condition to avoid ruining atomic write by data >>>>> GC, could we find another way to solve this issue? BTW, if there is direct >>>>> IO, we will also skip data segment GC. >>>>> >>>>> Thanks, >>>>> >>>>>> Signed-off-by: Yunlong Song >>>>>> --- >>>>>> fs/f2fs/gc.c | 6 ------ >>>>>> 1 file changed, 6 deletions(-) >>>>>> >>>>>> diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c >>>>>> index 5d5bba4..3fdcd04 100644 >>>>>> --- a/fs/f2fs/gc.c >>>>>> +++ b/fs/f2fs/gc.c >>>>>> @@ -621,9 +621,6 @@ static void move_data_block(struct inode *inode, block_t bidx, >>>>>> if (!check_valid_map(F2FS_I_SB(inode), segno, off)) >>>>>> goto out; >>>>>> >>>>>> - if (f2fs_is_atomic_file(inode)) >>>>>> - goto out; >>>>>> - >>>>>> set_new_dnode(&dn, inode, NULL, NULL, 0); >>>>>> err = get_dnode_of_data(&dn, bidx, LOOKUP_NODE); >>>>>> if (err) >>>>>> @@ -718,9 +715,6 @@ static void move_data_page(struct inode *inode, block_t bidx, int gc_type, >>>>>> if (!check_valid_map(F2FS_I_SB(inode), segno, off)) >>>>>> goto out; >>>>>> >>>>>> - if (f2fs_is_atomic_file(inode)) >>>>>> - goto out; >>>>>> - >>>>>> if (gc_type == BG_GC) { >>>>>> if (PageWriteback(page)) >>>>>> goto out; >>>>>> >>>>> . >>>>> >>> . >>> > > . > -- Thanks, Yunlong Song From 1584307759063365624@xxx Fri Nov 17 10:13:39 +0000 2017 X-GM-THRID: 1583469797370502209 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread