linux学习 运行panic-5

20240521

上篇定位到 setup_bdev_super(fs\super.c)
接着可以看到 bdev_open_by_dev
且从log信息可见错误码为-6 对应错误原因

ENXIO(通常是6):没有这样的设备或地址
根据这个错误码 首先排查 blkdev_get_no_open(block\bdev.c)
比较顺利 blkdev_get_no_open里打inode 发现是0
所以来看一下 ilookup(fs\inode.c) 干了什么
看 ilookup 中的大体逻辑 inode好像是由一个hash结构管理的 同时有锁保护

提问文心一言得知一些常见错误码

以下内容为文心一言提供
Linux内核定义了许多错误码,用于表示在内核空间或用户空间操作时可能遇到的各种错误情况。以下是一些常见的Linux内核错误码及其含义:

0:成功(无错误)
EPERM(通常是1):操作不被允许
ENOENT(通常是2):没有这样的文件或目录
ESRCH(通常是3):没有这样的进程
EINTR(通常是4):被中断的系统调用
EIO(通常是5):I/O错误
ENXIO(通常是6):没有这样的设备或地址
E2BIG(通常是7):参数列表太长
ENOEXEC(通常是8):执行格式错误
EBADF(通常是9):坏的文件描述符
ECHILD(通常是10):没有子进程
EAGAIN(通常是11):资源暂时不可用,需要重试(非阻塞模式下)
ENOMEM(通常是12):内存不足
EACCES(通常是13):权限不够
EFAULT(通常是14):无效的内存地址
ENOTBLK(通常是15):块设备所需的操作不适用于非块设备
EBUSY(通常是16):设备或资源正忙
EEXIST(通常是17):文件已存在
EXDEV(通常是18):跨设备链接
ENODEV(通常是19):没有找到相应的设备
ENOTDIR(通常是20):不是一个目录
EISDIR(通常是21):是一个目录
EINVAL(通常是22):无效参数
ENFILE(通常是23):打开的文件过多
EMFILE(通常是24):打开的文件过多(在单个进程中)
ENOTTY(通常是25):不适当的I/O控制操作
ETXTBSY(通常是26):文本文件忙
EFBIG(通常是27):文件太大
ENOSPC(通常是28):没有空间可用
ESPIPE(通常是29):寻找一个非管道
EROFS(通常是30):只读文件系统
EMLINK(通常是31):链接过多
EPIPE(通常是32):管道破裂
EDOM(通常是33):数学参数错误
ERANGE(通常是34):结果超出范围
以上只是一部分常见的错误码,实际上Linux内核定义了许多其他的错误码。你可以查阅Linux内核的文档或头文件(如 <errno.h>)来获取完整的错误码列表和它们的定义。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值