有一个文件的路径,我通过 ioctl - 发出写入磁盘缓存请求ioctl(fd, SG_IO, &ioHdr)
。
printk:发送 ioctl 2285 到分区!?如何找出分区属于哪个块设备?我想用磁盘路径替换分区路径。
答案1
一般来说,谁说分区属于单个块设备?通常,它是使用某种设备管理器(例如 mdraid、lvm)跨多个磁盘进行扩展的东西。
无论如何,如果它在单个块设备上:
你读/sys/block/nvme0n1/dev
;这会给你一种major:minor
信息。那么您的“母设备”就是major:0
;因此,您可以阅读/sys/dev/block/${major}:0/device
以获取设备的“规范名称”。
如果(这是一个很强的 if!) /dev 中有一个条目,它的主要、次要为${major},0
。