On Tue, Apr 24, 2018 at 07:28:27PM +0800, Qu Wenruo wrote:
> > I've read the discussion under previous version again, IMHO the best way
> > to report what's going on is to use 2 functions for mount ant pre-commit
> > time.
>
> OK, next version will go that direction.
>
> Although it may still be a little tricky to split what we need in
> btrfs_validate_super() and btrfs_precheck_super().
>
> What about this idea:
> - btrfs_precheck_super() only checks the very basis:
> * magic
> * incompat flags
> * csum type
> Any mismatch will do friendly prompt ("no btrfs detected" or
> "unsupported flags/csum type" respectively)
>
> - btrfs_validate_super() do the comprehensive check:
> * Everything we did in this patchset
> * including magic, incompat flags and csum type
> Any mismatch will be considered as corruption.
>
> For mount time, we call btrfs_precheck_super() then btrfs_validate_super().
>
> For commit time, only btrfs_validate_super().
>
> How about this solution?
I'd do that the other way around:
* mount checks: btrfs_validate_super - the superblock on disk must be
valid before we mount it
btrfs_validate_super()
* pre-commit checks: the superblock must be valid and we can also do
some additional checks to detect in-memory corruption
btrfs_super_precommit_check()
btrfs_validate_super()
if (incompat) {
...
}
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html