Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp1963285yba; Mon, 15 Apr 2019 01:59:11 -0700 (PDT) X-Google-Smtp-Source: APXvYqyrO+utcy/LVbYe+beSDJ9EON5kJ680TmzorH7BgeoFYY/j5f940pDebnkqGynRKYCMIV9A X-Received: by 2002:a62:6c43:: with SMTP id h64mr76026475pfc.123.1555318750895; Mon, 15 Apr 2019 01:59:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1555318750; cv=none; d=google.com; s=arc-20160816; b=C9p7ESdzdbA41q/S6OMY2/o68XirAlttgoo0cPJNFo5HoBPyrltpRl/Jyunri4UX3c PxDBlnJy+2WWRWw4cWleG611Ib5aMfKNjE5UitlIS10IrLLmzvzvtVTn1apt/JCBTBav KZfbEM0atuHn0f52b/G3v4qztc8pdrYXN6/Mn/xMqnRSJmzfHs1K9yd7WzwRTYoPPYLg tUmwQhiL/SW1WliHorLnIOYyYg9VZICu7fqcL+RUb8YMtoppSvTBvE8iWljDz/tJ1lE1 2Uvan1QZFCLsZpy+E0Kh/M9a0PvrTqHGIDf6SlXns8j0lEhtJ1Zpc5NrOnopwVriles5 z3DQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=cAJ/raJNNIW3ENXDmHYJsE1MdpxA/szZCRklNQrrsRU=; b=HE2i14KkgU5163h5xgnV6drtxFtiFFGxGKSo5Wc5dwdrkVcauycCeVl5VffxqpCGyU dZnUTVWN7GmDDDjt21+dfG/KouSKf9fTPcwQydS4j07fjEaki0ijm9FNjjauSk26tDjR iL8NPuoOfRKPr5tumK4CkQccvUOSekpe7wPaSpItnp9Gdf/OPnXYTVivsvJpkENsLN6V c+DUOHjL3qgpY0d/HQdXhzbBmsaeKoqgny1+Hznwa5RfqgCZ1wuVOzyi50RYzO1gtv46 mmT6gKI6bYqbFb3j1n/q20OUTfQ1QLIs6yIsdECEZgEeE0+7wFakHdKTmvMFhgXcpZXO R6IA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b8si36823130pfd.55.2019.04.15.01.58.54; Mon, 15 Apr 2019 01:59:10 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726871AbfDOI5B (ORCPT + 99 others); Mon, 15 Apr 2019 04:57:01 -0400 Received: from szxga08-in.huawei.com ([45.249.212.255]:60688 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726275AbfDOI5B (ORCPT ); Mon, 15 Apr 2019 04:57:01 -0400 Received: from DGGEMM403-HUB.china.huawei.com (unknown [172.30.72.53]) by Forcepoint Email with ESMTP id 88C22B4D19F98EF189BD; Mon, 15 Apr 2019 16:56:58 +0800 (CST) Received: from dggeme763-chm.china.huawei.com (10.3.19.109) by DGGEMM403-HUB.china.huawei.com (10.3.20.211) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 15 Apr 2019 16:56:57 +0800 Received: from [10.134.22.195] (10.134.22.195) by dggeme763-chm.china.huawei.com (10.3.19.109) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1591.10; Mon, 15 Apr 2019 16:56:57 +0800 Subject: Re: [f2fs-dev] [PATCH 13/13] f2fs: don't recovery orphan inode on readonly device To: Ju Hyung Park CC: Jaegeuk Kim , , References: <20190415073054.2577-1-yuchao0@huawei.com> <20190415073054.2577-5-yuchao0@huawei.com> From: Chao Yu Message-ID: Date: Mon, 15 Apr 2019 16:56:56 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [10.134.22.195] X-ClientProxiedBy: dggeme719-chm.china.huawei.com (10.1.199.115) To dggeme763-chm.china.huawei.com (10.3.19.109) X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2019/4/15 16:10, Ju Hyung Park wrote: > Hi, > > Thanks for the fix. I'll try this sooner than later. > > One minor request though, can you change > "JuHyung Park " > to > "Park Ju Hyung "? > > That's my preference and I'd like to avoid any inconsistencies. Sure, will update it in next version. :) > > One additional question from reviewing the code surrounding it: > does it really makes sense to cleanup orphan inodes even when the "ro" > mount option is passed? > It's an explicit request from the user not to write to the block device/image. Now, f2fs follows the rule that ext4 kept, you can check codes in ext4_orphan_cleanup() if (bdev_read_only(sb->s_bdev)) { ext4_msg(sb, KERN_ERR, "write access " "unavailable, skipping orphan cleanup"); return; } ... if (s_flags & SB_RDONLY) { ext4_msg(sb, KERN_INFO, "orphan cleanup on readonly fs"); sb->s_flags &= ~SB_RDONLY; } There are two points in above codes: - if block device is readonly, filesystem should not execute any recovery flow which can trigger write IO. - if filesystem was mounted as readonly one, and recovery is needed, it will ignore readonly flag and update data in device for journal recovery during mount. So IMO, readonly mountoption sematics is only try to restrict data/meta update behavior that is triggered by user from mountpoint, but filesystem still can do any updates on a writable device if it needs, mostly like recovery flow. Anyway, if you want to limit any updates on block device, making it readonly will be a good choice. :) Thanks, > > Thanks. > > On Mon, Apr 15, 2019 at 4:31 PM Chao Yu wrote: >> >> As JuHyung Park reported in mailing list: >> >> https://sourceforge.net/p/linux-f2fs/mailman/message/36639787/ >> >> generic_make_request: Trying to write to read-only block-device loop0 (partno 0) >> WARNING: CPU: 0 PID: 23437 at block/blk-core.c:2174 generic_make_request_checks+0x594/0x630 >> >> generic_make_request+0x46/0x3d0 >> submit_bio+0x30/0x110 >> __submit_merged_bio+0x68/0x390 >> f2fs_submit_page_write+0x1bb/0x7f0 >> f2fs_do_write_meta_page+0x7f/0x160 >> __f2fs_write_meta_page+0x70/0x140 >> f2fs_sync_meta_pages+0x140/0x250 >> f2fs_write_checkpoint+0x5c5/0x17b0 >> f2fs_sync_fs+0x9c/0x110 >> sync_filesystem+0x66/0x80 >> f2fs_recover_fsync_data+0x790/0xa30 >> f2fs_fill_super+0xe4e/0x1980 >> mount_bdev+0x518/0x610 >> mount_fs+0x34/0x13f >> vfs_kern_mount.part.11+0x4f/0x120 >> do_mount+0x2d1/0xe40 >> __x64_sys_mount+0xbf/0xe0 >> do_syscall_64+0x4a/0xf0 >> entry_SYSCALL_64_after_hwframe+0x44/0xa9 >> >> print_req_error: I/O error, dev loop0, sector 4096 >> >> If block device is readonly, we should never trigger write IO from >> filesystem layer, but previously, orphan recovery didn't consider >> such condition, result in triggering above warning, fix it. >> >> Reported-by: JuHyung Park >> Signed-off-by: Chao Yu >> --- >> fs/f2fs/checkpoint.c | 6 ++++++ >> 1 file changed, 6 insertions(+) >> >> diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c >> index a7ad1b1e5750..90e1bab86269 100644 >> --- a/fs/f2fs/checkpoint.c >> +++ b/fs/f2fs/checkpoint.c >> @@ -674,6 +674,12 @@ int f2fs_recover_orphan_inodes(struct f2fs_sb_info *sbi) >> if (!is_set_ckpt_flags(sbi, CP_ORPHAN_PRESENT_FLAG)) >> return 0; >> >> + if (bdev_read_only(sbi->sb->s_bdev)) { >> + f2fs_msg(sbi->sb, KERN_INFO, "write access " >> + "unavailable, skipping orphan cleanup"); >> + return 0; >> + } >> + >> if (s_flags & SB_RDONLY) { >> f2fs_msg(sbi->sb, KERN_INFO, "orphan cleanup on readonly fs"); >> sbi->sb->s_flags &= ~SB_RDONLY; >> -- >> 2.18.0.rc1 >> >> >> >> _______________________________________________ >> Linux-f2fs-devel mailing list >> Linux-f2fs-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel > . >