From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754081AbbCPNJa (ORCPT ); Mon, 16 Mar 2015 09:09:30 -0400 Received: from mailout3.samsung.com ([203.254.224.33]:30133 "EHLO mailout3.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753779AbbCPNJ2 (ORCPT ); Mon, 16 Mar 2015 09:09:28 -0400 X-AuditID: cbfee61b-f79d76d0000024d6-c6-5506d60619e7 From: Chao Yu To: Jaegeuk Kim , Changman Lee Cc: linux-f2fs-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org Subject: [PATCH] f2fs: set SBI_NEED_FSCK when encountering exception in recovery Date: Mon, 16 Mar 2015 21:08:44 +0800 Message-id: <002e01d05fea$6efffac0$4cfff040$@samsung.com> MIME-version: 1.0 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7bit X-Mailer: Microsoft Outlook 14.0 Thread-index: AdBf6gk0vKwtDXngSdycY7bfcEgVqw== Content-language: zh-cn X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrILMWRmVeSWpSXmKPExsVy+t9jAV22a2yhBm8faFlc29fIZPFk/Sxm i0uL3C0u75rD5sDisWlVJ5vH7gWfmTz6tqxi9Pi8SS6AJYrLJiU1J7MstUjfLoEro231M5aC H5wVHWsnMjcw3mDvYuTkkBAwkXjd28EEYYtJXLi3nq2LkYtDSGARo8SHy6/YQBJCAj8YJd6u KQex2QRUJJZ3/AdrEBHwkpi0/wQLiM0s4CHR2PGdtYuRg0NYIEDi+ENZkDCLgKpE157PzCA2 r4ClxJdXz1ggbEGJH5PvQbVqSWze1sQKYctLbF7zlhniHgWJHWdfM0Ks0pN4+O4qVL24xMYj t1gmMArMQjJqFpJRs5CMmoWkZQEjyypG0dSC5ILipPRcI73ixNzi0rx0veT83E2M4IB+Jr2D cVWDxSFGAQ5GJR7eFVJsoUKsiWXFlbmHGCU4mJVEeD+dBArxpiRWVqUW5ccXleakFh9ilOZg URLnVbJvCxESSE8sSc1OTS1ILYLJMnFwSjUwat/3FnjwoyPoh/idzW80ZjAzXHE8r7FI/sOV +t9cxytY5lko/woqEGjOX3GlxXVlwapCwXk8qpvN23cvXCIqGbiz8EP3xdPcPb3cFpXWwle2 LlT5nyWYYym2K+T9jp+V3BK9+fk81hOzX68JNTTX+91oqlYfnm41o2RD5eIbbv9n14gFCUUo sRRnJBpqMRcVJwIAV4MjlGQCAAA= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch tries to set SBI_NEED_FSCK flag into sbi only when we fail to recover in fill_super, so we could skip fscking image when we fail to fill super for other reason. Signed-off-by: Chao Yu --- fs/f2fs/super.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index e649f21..476df03 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -966,7 +966,7 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent) struct buffer_head *raw_super_buf; struct inode *root; long err = -EINVAL; - bool retry = true; + bool retry = true, need_fsck = false; char *options = NULL; int i; @@ -1155,9 +1155,6 @@ try_onemore: if (err) goto free_proc; - if (!retry) - set_sbi_flag(sbi, SBI_NEED_FSCK); - /* recover fsynced data */ if (!test_opt(sbi, DISABLE_ROLL_FORWARD)) { /* @@ -1169,8 +1166,13 @@ try_onemore: err = -EROFS; goto free_kobj; } + + if (need_fsck) + set_sbi_flag(sbi, SBI_NEED_FSCK); + err = recover_fsync_data(sbi); if (err) { + need_fsck = true; f2fs_msg(sb, KERN_ERR, "Cannot recover all fsync data errno=%ld", err); goto free_kobj; -- 2.3.0