Received: by 2002:a05:6a10:17d3:0:0:0:0 with SMTP id hz19csp2610438pxb; Tue, 13 Apr 2021 06:12:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxT07vr0aTIymxmRG6jb9WQ1R2gOolI26Wx6HAoiILWnR4i4cIgZ99TokVAJKwhIlx4MAxK X-Received: by 2002:a17:902:6bcc:b029:ea:f58f:274c with SMTP id m12-20020a1709026bccb02900eaf58f274cmr11150635plt.68.1618319537725; Tue, 13 Apr 2021 06:12:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618319537; cv=none; d=google.com; s=arc-20160816; b=QtQiU7Xi7Mk07przMCGkmc8XLLimRxCqXaFVgO8BjAVz3umWWudgmk4Mt71YeSJ/hl VirVF9b/KX/pHha2UmrHYkH6zDac+Xkmdeyjfl3IK83SIt2nzV14ENf67ZvQs0+fQqJ/ KKe4zKHScptOmwJZ894USpiGJUQwD0rW7Ipj0vIeAlJSJi0x6w9ZHLVQ1ioYEminwu6i au2EHQF/pRu3/Em4/nPEhKRGCVUqy2sVd3xbZwVvK2g2PIXhH2M7D7i7/vfXr/8Vr7cD cXzPQSPb17ACz/h98Q+PhzvCGZGF0n9jyksSXhRcu91j8Jz0/PhNeNcXfc5z7UJ7ps0C FAjA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=Ypoja6iUh/Hy4U47XfdQ7nJhoCf77I/8O8UNMCYeuds=; b=ZCrpjKGUkpJoITYsfppq6DEPXJVS9czsOJRLDpn3YN0aSxcOHsQzFqvAp1JBPxGSl5 L0/2rP1jlUOE1yLri2r9jhOC+pbUyFlD0WqKpVbbdCVvOpfCuvEVWthLoaaYjuipguYo +8yCWZx5v1frgysamVV+gl5khlqF9IpM26OtViaEfkLJ0j+CgWVfxuGtRh/coWNeB6lN vzZ2CmO1LPc+z9v4wcgmagFvjSokeMfTgcfQsjlxwMrYMK/Oy4z8uDYQZ3LGAQ64t/HU RYKffdBvgBBVd+c5fbjLpjld6SHrvtxhDcz0xdqgOQe2aPFO6ZPoKC930IAgId2yAliz CgwQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=EOaCFXUc; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f1si14079212plt.353.2021.04.13.06.12.05; Tue, 13 Apr 2021 06:12:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=EOaCFXUc; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 S241904AbhDMC7x (ORCPT + 99 others); Mon, 12 Apr 2021 22:59:53 -0400 Received: from mail.kernel.org ([198.145.29.99]:44374 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237380AbhDMC7w (ORCPT ); Mon, 12 Apr 2021 22:59:52 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id ACD2E613A9; Tue, 13 Apr 2021 02:59:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1618282773; bh=hbfFBZpQIOqrYUqshL/7tI8UK0GjZzppnidBVQmHG+g=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=EOaCFXUcH7W7w2L9tPvbl5yB4zma5CtKI1Tg51BTxPdqinL76ZtmZVYru/ftN7Nvp EEj3j4MdJxRZ7aXa94C1l5y+iUThkU5z1tP8ZEu+O8lk5J4wVbN8I/FKPfYym+6f18 8GpaKKpL3EyYZP85+0se1vPpI0aO0uwBU1n/r/xgY+PO8fu8k+8gxsKvHLE0u1jbnG eNp960PLerluXeSYOPsXKu0TVzSORqXSH6XvayAskdR3xlIP06XwP6efrPX/OvdbM1 w0dgbVCd/t1ufpbiwYL2krAOpjWV4Yfo/Ijv0WuoRisuS+oPQ/Z6X4dQVOtqPT5Y7g xyW/RKIsNNybw== Date: Mon, 12 Apr 2021 19:59:32 -0700 From: Jaegeuk Kim To: Chao Yu Cc: linux-f2fs-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2] f2fs: fix to avoid touching checkpointed data in get_victim() Message-ID: References: <20210324031828.67133-1-yuchao0@huawei.com> <2dfb085b-80ce-050b-5650-986675a07488@huawei.com> <66e0a225-7f52-a33e-ccd6-e7bfa1067ed1@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <66e0a225-7f52-a33e-ccd6-e7bfa1067ed1@kernel.org> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 04/11, Chao Yu wrote: > Hi Jaegeuk, > > Could you please help to merge below cleanup diff into original patch? > or merge this separately if it is too late since it is near rc7. I didn't review this tho, this gives an error in xfstests/083. > > From 5a342a8f332a1b3281ec0e2b4d41b5287689c8ed Mon Sep 17 00:00:00 2001 > From: Chao Yu > Date: Sun, 11 Apr 2021 14:29:34 +0800 > Subject: [PATCH] f2fs: avoid duplicated codes for cleanup > > f2fs_segment_has_free_slot() was copied from __next_free_blkoff(), > the main implementation of them is almost the same, clean up them to > reuse common code as much as possible. > > Signed-off-by: Chao Yu > --- > fs/f2fs/segment.c | 32 ++++++++++---------------------- > 1 file changed, 10 insertions(+), 22 deletions(-) > > diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c > index b33273aa5c22..bd9056165d62 100644 > --- a/fs/f2fs/segment.c > +++ b/fs/f2fs/segment.c > @@ -2627,22 +2627,20 @@ static void new_curseg(struct f2fs_sb_info *sbi, int type, bool new_sec) > curseg->alloc_type = LFS; > } > > -static void __next_free_blkoff(struct f2fs_sb_info *sbi, > - struct curseg_info *seg, block_t start) > +static int __next_free_blkoff(struct f2fs_sb_info *sbi, > + int segno, block_t start) > { > - struct seg_entry *se = get_seg_entry(sbi, seg->segno); > + struct seg_entry *se = get_seg_entry(sbi, segno); > int entries = SIT_VBLOCK_MAP_SIZE / sizeof(unsigned long); > unsigned long *target_map = SIT_I(sbi)->tmp_map; > unsigned long *ckpt_map = (unsigned long *)se->ckpt_valid_map; > unsigned long *cur_map = (unsigned long *)se->cur_valid_map; > - int i, pos; > + int i; > > for (i = 0; i < entries; i++) > target_map[i] = ckpt_map[i] | cur_map[i]; > > - pos = __find_rev_next_zero_bit(target_map, sbi->blocks_per_seg, start); > - > - seg->next_blkoff = pos; > + return __find_rev_next_zero_bit(target_map, sbi->blocks_per_seg, start); > } > > /* > @@ -2654,26 +2652,16 @@ static void __refresh_next_blkoff(struct f2fs_sb_info *sbi, > struct curseg_info *seg) > { > if (seg->alloc_type == SSR) > - __next_free_blkoff(sbi, seg, seg->next_blkoff + 1); > + seg->next_blkoff = > + __next_free_blkoff(sbi, seg->segno, > + seg->next_blkoff + 1); > else > seg->next_blkoff++; > } > > bool f2fs_segment_has_free_slot(struct f2fs_sb_info *sbi, int segno) > { > - struct seg_entry *se = get_seg_entry(sbi, segno); > - int entries = SIT_VBLOCK_MAP_SIZE / sizeof(unsigned long); > - unsigned long *target_map = SIT_I(sbi)->tmp_map; > - unsigned long *ckpt_map = (unsigned long *)se->ckpt_valid_map; > - unsigned long *cur_map = (unsigned long *)se->cur_valid_map; > - int i, pos; > - > - for (i = 0; i < entries; i++) > - target_map[i] = ckpt_map[i] | cur_map[i]; > - > - pos = __find_rev_next_zero_bit(target_map, sbi->blocks_per_seg, 0); > - > - return pos < sbi->blocks_per_seg; > + return __next_free_blkoff(sbi, segno, 0) < sbi->blocks_per_seg; > } > > /* > @@ -2701,7 +2689,7 @@ static void change_curseg(struct f2fs_sb_info *sbi, int type, bool flush) > > reset_curseg(sbi, type, 1); > curseg->alloc_type = SSR; > - __next_free_blkoff(sbi, curseg, 0); > + __next_free_blkoff(sbi, curseg->segno, 0); > > sum_page = f2fs_get_sum_page(sbi, new_segno); > if (IS_ERR(sum_page)) { > -- > 2.22.1