• Icenowy Zheng's avatar
    f2fs: use EINVAL for superblock with invalid magic · 38fb6d0e
    Icenowy Zheng authored
    The kernel mount_block_root() function expects -EACESS or -EINVAL for a
    unmountable filesystem when trying to mount the root with different
    filesystem types.
    
    However, in 5.3-rc1 the behavior when F2FS code cannot find valid block
    changed to return -EFSCORRUPTED(-EUCLEAN), and this error code makes
    mount_block_root() fail when trying to probe F2FS.
    
    When the magic number of the superblock mismatches, it has a high
    probability that it's just not a F2FS. In this case return -EINVAL seems
    to be a better result, and this return value can make mount_block_root()
    probing work again.
    
    Return -EINVAL when the superblock has magic mismatch, -EFSCORRUPTED in
    other cases (the magic matches but the superblock cannot be recognized).
    
    Fixes: 10f966bb ("f2fs: use generic EFSBADCRC/EFSCORRUPTED")
    Signed-off-by: default avatarIcenowy Zheng <icenowy@aosc.io>
    Reviewed-by: default avatarChao Yu <yuchao0@huawei.com>
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
    38fb6d0e
super.c 93.7 KB