Linux 块设备驱动完整篇:从gendisk、submit_bio 到blk-mq queue_rq 与排障磁盘节点在 /dev 里看得见,但 dd 挂死、iostat 的 await 只涨不跌、自写驱动 probe 成功却永远没有 I/O——根因很少在文件系统,而在 bio → request → 硬件队列 这一环没接牢。字符设备用 read/write 直接碰缓冲;块设备必须把请求交给统一块层,由 blk-mq 调度后再进驱动的 queue_rq。少实现完成回调、容量与逻辑块大小不一致、或在 queue_rq 里长时间阻塞,都会表现为「设备在、业务死」。