Received: by 2002:a05:6a10:413:0:0:0:0 with SMTP id 19csp1495935pxp; Thu, 10 Mar 2022 06:36:43 -0800 (PST) X-Google-Smtp-Source: ABdhPJyrZvukwCpm5Jyc27ba9gp3usS3h/DBHHoG5PjBUk/BorJ4E0Zgpcw4Nf17VlqSqFj7X4tI X-Received: by 2002:a17:90a:eb0b:b0:1be:ddea:29ef with SMTP id j11-20020a17090aeb0b00b001beddea29efmr16237439pjz.126.1646923002811; Thu, 10 Mar 2022 06:36:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646923002; cv=none; d=google.com; s=arc-20160816; b=R+EGz6PUd9KV5n1qzBpOWsFWWLZQ8ubSNXR5OepMwU7BAFPsW605+Vmq8q9VmDWWWW MR8E6Wz5MSwcv6F5TA8O2qin0KnSPl9dW6RVjxCg3W3H3DKyovSr02ihhgXcoCJFF6HU 58fhaWRAt/xN2Qw9tmVn0t6BPjoegxPfj3CO7LGDO8Bc2x2yVvpB+qqQxCX6uL3KL83x tkfHvsld7tQ5oPBndp79TPZRtAogvGsmDxrIgZVAEDD8iUXCrB7yIwlD72nmeYluY99Z BAbEBJU1DnA8ErT5ZV1AgfqJiWEieBqN0FAw85PhvZkGKa1sCNOvf2Cd3ikq3VlsCt+L gHMA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:to:content-language:subject:user-agent:mime-version:date :message-id:dkim-signature; bh=VAoqdHVPC1R3dEvV4PriYe9lPkybtq9qTj6XQuKPsjs=; b=G9a7zP2mh11hMiSxOD+ILtjrW9LD8dYwFChPfZHzeYIxdEXITfkF8uscOmJXmrGI+J iT893trMPmu30+44a1YaN0/O32+WLnJjil/5IO5S1T9k7ANbzMmiQcJ4aLR6GVn7WEaR nJbWNLyXRXQf8xiXoxhLa1WNdQYITs+2iRQW3XEzgZy9G+lmVT9NHNn3fyQA6+95DsNG Bsl+2KXk+XHg2+1nV8wBQKIURPRohzIYctfBwpMP94s+5PupcTJXvMjwMH+5hICPkiy+ fLJcEFABWA7ejtFbHux0uj6eLALDf9z1vfEweVF+brSAtDk8gVJhBtbxh+ZoPCRI6lgk HyAw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="o9hlq/3/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id j2-20020a17090a588200b001bd14e01f2bsi5048560pji.25.2022.03.10.06.36.24; Thu, 10 Mar 2022 06:36:42 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="o9hlq/3/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237212AbiCJByS (ORCPT + 99 others); Wed, 9 Mar 2022 20:54:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33996 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230445AbiCJByQ (ORCPT ); Wed, 9 Mar 2022 20:54:16 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 521ED127D69 for ; Wed, 9 Mar 2022 17:53:17 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id DF89A615C6 for ; Thu, 10 Mar 2022 01:53:16 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 54853C340E8; Thu, 10 Mar 2022 01:53:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1646877196; bh=FSwwg7VIAWVfVNVd3TkpDiWBggJe4J2RS2eGz3KYKkI=; h=Date:Subject:To:References:From:In-Reply-To:From; b=o9hlq/3/YlHMZWtZcKPQhziCXhpUiLVNj5h5GtH6a+juwKjsJim/ii6fHMXGhr0Q+ t+/fw5hBgFSPZnUOYoa2+VWf3WS4oJIfKR2VWgTSj68phjGhVS/nkmkF+2EjLTEB9+ DAqCcABDWULl8RVK+I1YXDpoRd8Y+C/VqEAmGkyE4ph/83UGgKdYi0MnvD732UKHqE jTXB4qHiVPC3FgKfo/hI7tGwiRC/LOPEQ2RCSjAFITSSAwWX5lcGJzcGOnh/jlKZ3f QuEk8FFaBjkM5zxlKzqKPvpUAKPe8PHhddbn+dluvj++oXv8EMLZbC7ILHEXtfbHXx Kijrv6rn35aRQ== Message-ID: <2a5564bb-463e-d163-0042-34fad42e2e46@kernel.org> Date: Thu, 10 Mar 2022 09:53:12 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.6.2 Subject: Re: [f2fs-dev] [PATCH 1/2] f2fs: evict inode cache for frozen fs Content-Language: en-US To: Jaegeuk Kim , linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net References: <20220309214834.3408741-1-jaegeuk@kernel.org> From: Chao Yu In-Reply-To: <20220309214834.3408741-1-jaegeuk@kernel.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-7.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A, RCVD_IN_DNSWL_HI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2022/3/10 5:48, Jaegeuk Kim wrote: > Let's purge inode cache in order to avoid the below deadlock. > > [freeze test] shrinkder > freeze_super > - pwercpu_down_write(SB_FREEZE_FS) > - super_cache_scan > - down_read(&sb->s_umount) > - prune_icache_sb > - dispose_list > - evict > - f2fs_evict_inode > thaw_super > - down_write(&sb->s_umount); > - __percpu_down_read(SB_FREEZE_FS) Ah, finally we catch this. :) > > Signed-off-by: Jaegeuk Kim > --- > fs/f2fs/debug.c | 1 + > fs/f2fs/f2fs.h | 1 + > fs/f2fs/inode.c | 6 ++++-- > fs/f2fs/super.c | 4 ++++ > 4 files changed, 10 insertions(+), 2 deletions(-) > > diff --git a/fs/f2fs/debug.c b/fs/f2fs/debug.c > index 9a13902c7702..cba5eab24595 100644 > --- a/fs/f2fs/debug.c > +++ b/fs/f2fs/debug.c > @@ -338,6 +338,7 @@ static char *s_flag[] = { > [SBI_QUOTA_SKIP_FLUSH] = " quota_skip_flush", > [SBI_QUOTA_NEED_REPAIR] = " quota_need_repair", > [SBI_IS_RESIZEFS] = " resizefs", > + [SBI_IS_FREEZING] = " freezefs", Could you please update description of "sb_status" entry in Documentation/ABI/testing/sysfs-fs-f2fs as well? Thanks, > }; > > static int stat_show(struct seq_file *s, void *v) > diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h > index 68d791ec8b27..da729f53daa8 100644 > --- a/fs/f2fs/f2fs.h > +++ b/fs/f2fs/f2fs.h > @@ -1293,6 +1293,7 @@ enum { > SBI_QUOTA_SKIP_FLUSH, /* skip flushing quota in current CP */ > SBI_QUOTA_NEED_REPAIR, /* quota file may be corrupted */ > SBI_IS_RESIZEFS, /* resizefs is in process */ > + SBI_IS_FREEZING, /* freezefs is in process */ > }; > > enum { > diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c > index ab8e0c06c78c..71f232dcf3c2 100644 > --- a/fs/f2fs/inode.c > +++ b/fs/f2fs/inode.c > @@ -778,7 +778,8 @@ void f2fs_evict_inode(struct inode *inode) > f2fs_remove_ino_entry(sbi, inode->i_ino, UPDATE_INO); > f2fs_remove_ino_entry(sbi, inode->i_ino, FLUSH_INO); > > - sb_start_intwrite(inode->i_sb); > + if (!is_sbi_flag_set(sbi, SBI_IS_FREEZING)) > + sb_start_intwrite(inode->i_sb); > set_inode_flag(inode, FI_NO_ALLOC); > i_size_write(inode, 0); > retry: > @@ -809,7 +810,8 @@ void f2fs_evict_inode(struct inode *inode) > if (dquot_initialize_needed(inode)) > set_sbi_flag(sbi, SBI_QUOTA_NEED_REPAIR); > } > - sb_end_intwrite(inode->i_sb); > + if (!is_sbi_flag_set(sbi, SBI_IS_FREEZING)) > + sb_end_intwrite(inode->i_sb); > no_delete: > dquot_drop(inode); > > diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c > index 8e3840973077..4b570b5c2674 100644 > --- a/fs/f2fs/super.c > +++ b/fs/f2fs/super.c > @@ -1663,11 +1663,15 @@ static int f2fs_freeze(struct super_block *sb) > /* ensure no checkpoint required */ > if (!llist_empty(&F2FS_SB(sb)->cprc_info.issue_list)) > return -EINVAL; > + > + /* to avoid deadlock on f2fs_evict_inode->SB_FREEZE_FS */ > + set_sbi_flag(F2FS_SB(sb), SBI_IS_FREEZING); > return 0; > } > > static int f2fs_unfreeze(struct super_block *sb) > { > + clear_sbi_flag(F2FS_SB(sb), SBI_IS_FREEZING); > return 0; > } >