From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754511AbeATE0w (ORCPT ); Fri, 19 Jan 2018 23:26:52 -0500 Received: from mail.kernel.org ([198.145.29.99]:55496 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752829AbeATE0q (ORCPT ); Fri, 19 Jan 2018 23:26:46 -0500 DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8A9E7214E1 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=jaegeuk@kernel.org From: Jaegeuk Kim To: linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net Cc: Jaegeuk Kim Subject: [PATCH 1/2] f2fs: allow to recover node blocks given updated checkpoint Date: Fri, 19 Jan 2018 20:26:42 -0800 Message-Id: <20180120042643.20717-1-jaegeuk@kernel.org> X-Mailer: git-send-email 2.15.0.531.g2ccb3012c9-goog Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If fsck.f2fs changes crc, we have no way to recover some inode blocks by roll- forward recovery. Let's relax the condition to recover them. Signed-off-by: Jaegeuk Kim --- fs/f2fs/node.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/fs/f2fs/node.h b/fs/f2fs/node.h index 0ee3e5ff49a3..15280eeb24ea 100644 --- a/fs/f2fs/node.h +++ b/fs/f2fs/node.h @@ -305,10 +305,11 @@ static inline bool is_recoverable_dnode(struct page *page) struct f2fs_checkpoint *ckpt = F2FS_CKPT(F2FS_P_SB(page)); __u64 cp_ver = cur_cp_version(ckpt); - if (__is_set_ckpt_flags(ckpt, CP_CRC_RECOVERY_FLAG)) + if (__is_set_ckpt_flags(ckpt, CP_CRC_RECOVERY_FLAG)) { cp_ver |= (cur_cp_crc(ckpt) << 32); - - return cp_ver == cpver_of_node(page); + return cp_ver == cpver_of_node(page); + } + return (cp_ver << 32) == (cpver_of_node(page) << 32); } /* -- 2.15.0.531.g2ccb3012c9-goog