Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp83928pxf; Tue, 30 Mar 2021 20:19:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzuwkPacoPRD7cn9bJy3akQWqjyoIWL60iZwO+A3FqggAss+pNc8dqvFcy11ghYhoya0dB6 X-Received: by 2002:a05:6402:4407:: with SMTP id y7mr1060037eda.247.1617160760590; Tue, 30 Mar 2021 20:19:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617160760; cv=none; d=google.com; s=arc-20160816; b=wU9NdnIMb/Hv3cap7z2roooUBgwK730jNU/ifFg8r66k7ZWdRAkb4wTTB9ivz0A3Lv u6JfuC/Gb5Du7nB2esmTRmlCqN8mnXTjxXYa6rKLGvRGMM902BEbSjAY2eYRuc+Uv+ao Uz6QGXQdyqe7GZgEpVQ4nOQ56qpLYrrcOJy/GGhAGuz1POEbRb1xMrBYiLfAI2cvi+j7 I3wM04cpkEfiOB59+lJ74/fH1L6RITndNW/P553cqM+RA897IcyJ9mkmWm+Tfz+vWADh prqJXx7wpLO0Kq3zx41bpLACcfYWpVaF2SEYFEf4X04Y9ipB/2S1o/omW7YYIXLuyePK ROug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=Ole0OM51NYl58kg7qTcFy6N4TB0Sdhy/SlR5ZtrwInQ=; b=rVpFeGIvlcLnwGAZMSuIHIEgknPyuyUwsCGT+hGTkLggloUPMDtvO1A3jXzcKWsEzC a/9pjRapF5nCAw/sAlmOQaEplqCmaJFhT3SBNgebPpIX8B7d/gR5MELplwbmPa7OIP7W bnEJFMaD6+3QrY4XyeTdRgBVP2YMXT0p/N9wfVyj1ecxkD/z5paZMb9ulT+I7DR63Lpt 49ZBoBdS4mK34TSen15OT3DsTd+K6xqIsbMqxwttPdOAJJUEP3fZjAICGQN0f/Wl9ZGD BMPjaOFOQ4UAWsfVcC+9pU7NcjdM+6YJVap3uEJc9r6mf+LGvfVxP/vBYKgI9go3M0bS syhg== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id br23si598501ejb.740.2021.03.30.20.18.58; Tue, 30 Mar 2021 20:19:20 -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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233410AbhCaDRH (ORCPT + 99 others); Tue, 30 Mar 2021 23:17:07 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:14970 "EHLO szxga05-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233569AbhCaDQy (ORCPT ); Tue, 30 Mar 2021 23:16:54 -0400 Received: from DGGEMS405-HUB.china.huawei.com (unknown [172.30.72.60]) by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4F9BJ557BLzyNPQ; Wed, 31 Mar 2021 11:14:45 +0800 (CST) Received: from szvp000203569.huawei.com (10.120.216.130) by DGGEMS405-HUB.china.huawei.com (10.3.19.205) with Microsoft SMTP Server id 14.3.498.0; Wed, 31 Mar 2021 11:16:43 +0800 From: Chao Yu To: CC: , , , Chao Yu Subject: [PATCH] f2fs: fix to restrict mount condition on readonly block device Date: Wed, 31 Mar 2021 11:16:32 +0800 Message-ID: <20210331031632.76800-1-yuchao0@huawei.com> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [10.120.216.130] X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When we mount an unclean f2fs image in a readonly block device, let's make mount() succeed only when there is no recoverable data in that image, otherwise after mount(), file fsyned won't be recovered as user expected. Fixes: 938a184265d7 ("f2fs: give a warning only for readonly partition") Signed-off-by: Chao Yu --- fs/f2fs/super.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index 954b1fe97d67..14239e2b7ae7 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -3966,10 +3966,18 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent) * previous checkpoint was not done by clean system shutdown. */ if (f2fs_hw_is_readonly(sbi)) { - if (!is_set_ckpt_flags(sbi, CP_UMOUNT_FLAG)) - f2fs_err(sbi, "Need to recover fsync data, but write access unavailable"); - else - f2fs_info(sbi, "write access unavailable, skipping recovery"); + if (!is_set_ckpt_flags(sbi, CP_UMOUNT_FLAG)) { + err = f2fs_recover_fsync_data(sbi, true); + if (err > 0) { + err = -EROFS; + f2fs_err(sbi, "Need to recover fsync data, but " + "write access unavailable, please try " + "mount w/ disable_roll_forward or norecovery"); + } + if (err < 0) + goto free_meta; + } + f2fs_info(sbi, "write access unavailable, skipping recovery"); goto reset_checkpoint; } -- 2.29.2