• Dave Young's avatar
    btrfs: mount failure return value fix · 20b45077
    Dave Young authored
    I happened to pass swap partition as root partition in cmdline,
    then kernel panic and tell me about "Cannot open root device".
    It is not correct, in fact it is a fs type mismatch instead of 'no device'.
    
    Eventually I found btrfs mounting failed with -EIO, it should be -EINVAL.
    The logic in init/do_mounts.c:
            for (p = fs_names; *p; p += strlen(p)+1) {
                    int err = do_mount_root(name, p, flags, root_mount_data);
                    switch (err) {
                            case 0:
                                    goto out;
                            case -EACCES:
                                    flags |= MS_RDONLY;
                                    goto retry;
                            case -EINVAL:
                                    continue;
                    }
    		print "Cannot open root device"
    		panic
    	}
    SO fs type after btrfs will have no chance to mount
    
    Here fix the return value as -EINVAL
    Signed-off-by: default avatarDave Young <hidave.darkstar@gmail.com>
    Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
    20b45077
disk-io.c 70.4 KB