Received: by 2002:a05:6a10:413:0:0:0:0 with SMTP id 19csp754735pxp; Fri, 11 Mar 2022 14:15:19 -0800 (PST) X-Google-Smtp-Source: ABdhPJwnSVw6tQ2xkV+P+FARFjXq+ZBklWa43ijPhmrvYxifCk/26CUUvmW7yjLLMKe/ZQKeIP30 X-Received: by 2002:a17:90b:3912:b0:1bf:b160:fb71 with SMTP id ob18-20020a17090b391200b001bfb160fb71mr16007371pjb.156.1647036919028; Fri, 11 Mar 2022 14:15:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1647036919; cv=none; d=google.com; s=arc-20160816; b=CCLml47TlzgsPpyNJ5L89uFJ1I+DFO9TrrXycyaCqtPPDmUfiAaeP+uKhCAwaiwCN8 tMisIDXDD2XL9rMmUDli3YYQPTxwJIeCu6CHTgw1gCM8DYXXAcmyCNm7DZbYoGuGWbMK twRKTM4Rvtn0O1liKH+INH8hgjxnDjZUogFiNKLRzB3qeCDwZYVqjz5J4EDw0Q9k0Y6o JjrMxaTsPDuh+7RB82lRKbqFJh8HcbvtcluzMkez2WP9OwV+I2xgZ8JGZdrhJcprgSQu HMM+KOyUDLHsZ9jP5htYKUxR32/1YHaUdkuwLv3c7Pryl0TogdGXRvq9tsS2KjCrtO6d 8gsw== 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:references :to:from:content-language:subject:user-agent:mime-version:date :message-id:dkim-signature; bh=hz9K7tVbjkjluElHrHaUd8aHSFj8N5HGaKqh+UzPBP4=; b=oZMncwfMvpLELzFOyNxaw//k3mi3RmasTfnKqjzD69jyHi+Ic9VH4YdXTUHfnI/KAU glGEedUCcQVCOesP8dXMWho4aAKHp59u/hCDMvhr7G/SFHZMJ+j9sWYUxWYohSXflTLx TvUfGjnZ2FVMWjMoqybvBOI7s50oIrI21MArm2h3b6hZM3TIbX+hP/SuVnTVWRMmBdi1 V/8ynqHvgVodPsD1Rtvo4TQw24uiJfPh/Z3IJdMTE40rgUe1fr/RSkadi4qTgiGbz2SX Y5ddEIgsiNmOpTREAhysTkT72qgjruedtUtee5htyZfoOhIR2vlLTY5x7ZMyNEKrqxVk zbAQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=NI0JTVBO; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 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 lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id b2-20020a17090a9bc200b001bf71a5a3fcsi6234416pjw.175.2022.03.11.14.15.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Mar 2022 14:15:19 -0800 (PST) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=NI0JTVBO; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id E1AA2226C17; Fri, 11 Mar 2022 13:24:36 -0800 (PST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344228AbiCKDME (ORCPT + 99 others); Thu, 10 Mar 2022 22:12:04 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57592 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235944AbiCKDMD (ORCPT ); Thu, 10 Mar 2022 22:12:03 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5FF7D14006 for ; Thu, 10 Mar 2022 19:10:57 -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 ams.source.kernel.org (Postfix) with ESMTPS id 10F28B829B2 for ; Fri, 11 Mar 2022 03:10:56 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DFC34C340E8; Fri, 11 Mar 2022 03:10:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1646968254; bh=zlGhTl9/YkiUSMl74eSzNJcDmU9fpb9Qv0PH5mitNac=; h=Date:Subject:From:To:References:In-Reply-To:From; b=NI0JTVBOsR8mkwEzChAHX9DF7OSp6G6powR5W6Txde4/5nJ5blAb6g0vB0fa45ucr Q7xysFapfaeD+TrQpUsSft3xOf0dq8IlM2+wxsjnnk3xQws9N0VnITAQgqou57if7M Kox5NObpSlTloQG0Zk/1QKxrYjL9NPSPGL01WKJkRZrfFw9DEzcqPXuk8Ot2In71Xp M2nBjsB5uqSu1PbudsubPhZ8359aCr8O7g59/WDhCJOVPyRqKfuy38XShztaWPtzTZ 09Zl6TfcVDqAm4XP+tcFgCJMy05BwtKicuVi1V0UcSFLpEfciMeqwV8ER4N04X4iCE 6aFTFVQOhfAqQ== Message-ID: Date: Fri, 11 Mar 2022 11:10:50 +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 From: Chao Yu To: Jaegeuk Kim , linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net References: <20220309214834.3408741-1-jaegeuk@kernel.org> <2a5564bb-463e-d163-0042-34fad42e2e46@kernel.org> In-Reply-To: <2a5564bb-463e-d163-0042-34fad42e2e46@kernel.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, NICE_REPLY_A,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable 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 Jaegeuk, Could you please send v2 patch to mailing list? as I saw the revised one has been merged in dev branch. Otherwise, I've no idea where I should reply "Reviewed-by" tag to... Thanks, On 2022/3/10 9:53, Chao Yu wrote: > 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; >>   } > > > _______________________________________________ > Linux-f2fs-devel mailing list > Linux-f2fs-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel