From: Qu Wenruo <wqu@suse.de>
To: dsterba@suse.cz, Qu Wenruo <wqu@suse.com>,
linux-btrfs@vger.kernel.org, Nikolay Borisov <nborisov@suse.com>
Subject: Re: [PATCh v2 8/9] btrfs: tree-checker: Verify inode item
Date: Thu, 28 Mar 2019 21:42:59 +0800 [thread overview]
Message-ID: <ae0fe6da-a329-ceea-cac5-085595965511@suse.de> (raw)
In-Reply-To: <20190328133806.GD29086@twin.jikos.cz>
On 2019/3/28 下午9:38, David Sterba wrote:
> On Wed, Mar 20, 2019 at 02:37:16PM +0800, Qu Wenruo wrote:
>> + if (S_ISDIR(mode) && btrfs_inode_nlink(leaf, iitem) > 1) {
>> + inode_item_err(fs_info, leaf, slot,
>> + "invalid nlink: has %u expect no more than 1 for dir",
>> + btrfs_inode_nlink(leaf, iitem));
>> + goto error;
>> + }
>
> I'm not sure about this check, the number of links for a directory is 1,
> but the exact count could be implemented (there's a project idea for
> that). I don't know if this will require an incompat bit or not.
That means we have hard link for directories.
That's definitely something current VFS can't handle, things like path
resolve loop is definitely going to happen.
>
> As long as the number is not authoritative (ie. can be verified and
> fixed from the actual directory items), then I'd say don't check it at
> all, or perhaps do only weak check if it's > 0.
Current the number is authoritative already.
It means the number of hard links, both for directory and regular
inodes, also indicates the number of INODE_REF.
Btrfs check will verify that.
>
> Out of all the verified inode data, this is the least important, I think
> we're not losing some significant piece of information.
That's true, nlinks is not that important, but just as always,
tree-checker is checking every meaningful member and try to catch
anything uncommon.
Although that restrict behavior has already caused a lot of false alerts
in the past, I still prefer to do such restrict check.
Thanks,
Qu
next prev parent reply other threads:[~2019-03-28 13:43 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-20 6:37 [PATCh v2 0/9] btrfs: tree-checker: More enhancement for fuzzed Qu Wenruo
2019-03-20 6:37 ` [PATCh v2 1/9] btrfs: Move btrfs_check_chunk_valid() to tree-check.[ch] and export it Qu Wenruo
2019-03-20 10:34 ` Johannes Thumshirn
2019-03-25 17:06 ` David Sterba
2019-03-25 23:02 ` Qu Wenruo
2019-03-26 14:34 ` David Sterba
2019-03-20 6:37 ` [PATCh v2 2/9] btrfs: tree-checker: Make chunk item checker more readable Qu Wenruo
2019-03-20 10:41 ` Johannes Thumshirn
2019-03-26 15:08 ` David Sterba
2019-03-20 6:37 ` [PATCh v2 3/9] btrfs: tree-checker: Make btrfs_check_chunk_valid() return EUCLEAN instead of EIO Qu Wenruo
2019-03-20 10:44 ` Johannes Thumshirn
2019-03-20 6:37 ` [PATCh v2 4/9] btrfs: tree-checker: Check chunk item at tree block read time Qu Wenruo
2019-03-20 10:56 ` Johannes Thumshirn
2019-03-20 6:37 ` [PATCh v2 5/9] btrfs: tree-checker: Verify dev item Qu Wenruo
2019-03-20 11:51 ` Johannes Thumshirn
2019-03-20 11:53 ` Qu Wenruo
2019-03-25 17:04 ` David Sterba
2019-04-06 1:07 ` Qu Wenruo
2019-03-20 6:37 ` [PATCh v2 6/9] btrfs: Check the first key and level for cached extent buffer Qu Wenruo
2019-03-20 12:02 ` Johannes Thumshirn
2019-03-20 6:37 ` [PATCh v2 7/9] btrfs: tree-checker: Enhance chunk checker to validate chunk profiler Qu Wenruo
2019-03-20 12:38 ` Johannes Thumshirn
2019-03-20 6:37 ` [PATCh v2 8/9] btrfs: tree-checker: Verify inode item Qu Wenruo
2019-03-20 13:27 ` Johannes Thumshirn
2019-03-25 4:27 ` Qu Wenruo
2019-03-26 16:02 ` David Sterba
2019-03-27 0:13 ` Qu Wenruo
2019-03-26 15:27 ` David Sterba
2019-03-28 13:38 ` David Sterba
2019-03-28 13:42 ` Qu Wenruo [this message]
2019-03-28 13:57 ` David Sterba
2019-03-28 14:00 ` Qu Wenruo
2019-03-28 14:07 ` David Sterba
2019-03-28 14:13 ` Qu Wenruo
2019-03-28 14:25 ` David Sterba
2019-03-28 23:49 ` Qu Wenruo
2019-03-20 6:37 ` [PATCh v2 9/9] btrfs: inode: Verify inode mode to avoid NULL pointer dereference Qu Wenruo
2019-03-20 13:33 ` Johannes Thumshirn
2019-03-28 13:53 ` David Sterba
2019-03-28 13:58 ` Qu Wenruo
2019-03-28 14:02 ` David Sterba
2019-03-28 15:48 ` [PATCh v2 0/9] btrfs: tree-checker: More enhancement for fuzzed David Sterba
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ae0fe6da-a329-ceea-cac5-085595965511@suse.de \
--to=wqu@suse.de \
--cc=dsterba@suse.cz \
--cc=linux-btrfs@vger.kernel.org \
--cc=nborisov@suse.com \
--cc=wqu@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).