Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp264905ybl; Tue, 20 Aug 2019 19:41:42 -0700 (PDT) X-Google-Smtp-Source: APXvYqwg6MWNiL06pmwhYHwBi1bijxKOPT1hnrwCM5Dik7wblwut/2ynmC8Ke0SEqjFURq9kZgi8 X-Received: by 2002:a63:c008:: with SMTP id h8mr28134396pgg.427.1566355301763; Tue, 20 Aug 2019 19:41:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566355301; cv=none; d=google.com; s=arc-20160816; b=JkFhEmh51TsTqnsep2HZOPMARgFE3nhdMbxyYKgtq35sfF8PSdkGOAvU5nkqNuIdQD MX2kLuKpjd7uOmTXwRjDjhn+uKrJ8Mo6GCthHbrAdxjakJQ5y3eCc8hK6jf7wLRCvhJ+ +St+Ty1CDThL0IdC3HaRkamhvy1JeOYuRB3qP9aMaE8T/4OlMyM81DpRN7j87hetRAfU uxnVHrPzqkgMM+am88HbCWnM/G6K1SD7CnzbpIZkZDDO4I4bw+T8ywHUMnhjQaeXZ3Ll aN+7WrvI4rC+dyvF5w45+hfmtU+XUhfFBZeZDgEElxqS/0SsFai7d8KAmdlbZO2SHSjP qEuA== 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=c+fD0DEUFATIVXwOK1ZWE1QpT5KmQ7aRkyjfnfT/sXA=; b=dM2KM8TK8soRIzHudBGaM6MRtoyq2H16tlJOEB3iU1OqAfg0f0aZvG7Q+Gx4ELgiA7 EFmcbaDddNseiDKh3/li6WZmS5X/0EwtpMwz3bs8uStYUgS8JVNJbvYev3XlxdmhA8VV Jw8pi0wV+GI6DkPH/8BryP4kf3/bNmeomuPbQGIoEVGczLUztbwStfOXxy71uTqomtXN tLM4oU8oAj4E86U+08L5P09WUn3a3fKHfpK8NVdlgvTRy5ONVF89BW6xHKLynIMy1RCS Jfs2w9mWmBcinrXc6Fmnhmg+lvjf+UZk0hKrBFbnYFv/Jkf909NouP4SRcThy80R0eJ+ Eatw== 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 21si14258782pfo.138.2019.08.20.19.41.24; Tue, 20 Aug 2019 19:41:41 -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 S1727017AbfHUCSO (ORCPT + 99 others); Tue, 20 Aug 2019 22:18:14 -0400 Received: from szxga07-in.huawei.com ([45.249.212.35]:53904 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726329AbfHUCSO (ORCPT ); Tue, 20 Aug 2019 22:18:14 -0400 Received: from DGGEMS403-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id 875DA282536BF636B30A; Wed, 21 Aug 2019 09:57:36 +0800 (CST) Received: from [10.134.22.195] (10.134.22.195) by smtp.huawei.com (10.3.19.203) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 21 Aug 2019 09:57:30 +0800 Subject: Re: [PATCH] erofs: move erofs out of staging To: "Darrick J. Wong" CC: "Theodore Y. Ts'o" , Qu Wenruo , Gao Xiang , Christoph Hellwig , "Eric Biggers" , Richard Weinberger , "Greg Kroah-Hartman" , Jan Kara , "Dave Chinner" , David Sterba , Miao Xie , devel , Stephen Rothwell , Amir Goldstein , linux-erofs , Al Viro , "Jaegeuk Kim" , linux-kernel , "Li Guifu" , Fang Wei , "Pavel Machek" , linux-fsdevel , "Andrew Morton" , torvalds References: <20190818172938.GA14413@sol.localdomain> <20190818174702.GA17633@infradead.org> <20190818181654.GA1617@hsiangkao-HP-ZHAN-66-Pro-G1> <20190818201405.GA27398@hsiangkao-HP-ZHAN-66-Pro-G1> <20190819160923.GG15198@magnolia> <20190819203051.GA10075@hsiangkao-HP-ZHAN-66-Pro-G1> <20190820155623.GA10232@mit.edu> <9d8f88ee-4b81-bdfa-b0d7-9c7d5d54e70a@huawei.com> <20190821014818.GB1037422@magnolia> From: Chao Yu Message-ID: <8ae23b55-eb3f-e6e8-4cfb-5ce2885d8ff8@huawei.com> Date: Wed, 21 Aug 2019 09:57:28 +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: <20190821014818.GB1037422@magnolia> Content-Type: text/plain; charset="windows-1252" Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [10.134.22.195] 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/8/21 9:48, Darrick J. Wong wrote: > On Wed, Aug 21, 2019 at 09:34:02AM +0800, Chao Yu wrote: >> On 2019/8/20 23:56, Theodore Y. Ts'o wrote: >>> The reason why there needs to be at least some file system specific >>> code for fuzz testing is because for efficiency's sake, you don't want >>> to fuzz every single bit in the file system, but just the ones which >>> are most interesting (e.g., the metadata blocks). For file systems >>> which use checksum to protect against accidental corruption, the file >>> system fuzzer needs to also fix up the checksums (since you can be >>> sure malicious attackers will do this). >> >> Yup, IMO, if we really want such tool, it needs to: >> - move all generic fuzz codes (trigger random fuzzing in meta/data area) into >> that tool, and >> - make filesystem generic fs_meta/file_node lookup/inject/pack function as a >> callback, such as >> * .find_fs_sb >> * .inject_fs_sb >> * .pack_fs_sb > > What about group descriptors? AG headers? The AGFLWTFBBQLOL? > >> * .find_fs_bitmap >> * .inject_fs_bitmap > > Probably want an find/inject for log blocks too. > > Oh, wait, XFS doesn't log blocks like jbd2 does. :) :) Yes, I admit that I should miss a lot of fs meta type here, but that's just a simple example here, we should not treat it as a full design.... :) > >> * .find_fs_inode_bitmap >> * .inject_fs_inode_bitmap > > XFS has an inode bitmap? ;) We can leave callback as NULL? ;) > > (This is why there's no generic fuzz tool; every fs is different enough > that doing so would be sort of a mess.) Yes, I just wonder if there is any possible we can save some redundant work. > > ((Granted, you could also look at how xfstests uses the xfs_db fuzz > command so at least it would be systematic...)) Okay, I will check that. Thanks, > >> * .find_inode_by_num >> * .inject_inode >> * .pack_inode >> * .find_tree_node_by_level >> ... > > What about the name/value btrees? (Ok, I'll stop now.) > > --D > >> then specific filesystem can fill the callback to tell how the tool can locate a >> field in inode or a metadata in tree node and then trigger the designed fuzz. >> >> It will be easier to rewrite whole generic fwk for each filesystem, because >> existed filesystem userspace tool should has included above callback's detail >> codes... >> >>> On Tue, Aug 20, 2019 at 10:24:11AM +0800, Chao Yu wrote: >>>> filesystem fill the tool's callback to seek a node/block and supported fields >>>> can be fuzzed in inode. >> >>> >>> What you *can* do is to make the file system specific portion of the >>> work as small as possible. Great work in this area is Professor Kim's >>> Janus[1][2] and Hydra[2] work. (Hydra is about to be published at SOSP 19, >>> and was partially funded from a Google Faculty Research Work.) >>> >>> [1] https://taesoo.kim/pubs/2019/xu:janus.pdf >>> [2] https://github.com/sslab-gatech/janus >>> [3] https://github.com/sslab-gatech/hydra >> >> Thanks for the information! >> >> It looks like janus and hydra alreay have generic compress/decompress function >> across different filesystems, it's really a good job, I do think it may be the >> one once it becomes more generic. >> >> Thanks >> >>> > . >