我有一个 SATA 块设备,它报告的容量小于其可访问空间,我想使用 Linux 为块设备创建的文件读取和写入它超过报告的容量。所以我希望使用从open({ "/dev/sda", O_RDWR
)返回的描述符进行操作。但是,当我尝试使用lseek
来查找设备的容量时,我收到一个错误,并且 errno 被设置为EINVAL (22)
. 有没有办法在不修改设备驱动程序并且仍然使用返回的文件描述符的情况下访问超出设备容量的数据open()
?
我的 Linux 版本是内核 3.10.0-514.21.1.el7.x86_64 的 CentOS 7,尽管我会对解决方案感兴趣,即使它们涉及其他 Linux 发行版。
编辑:我正在使用的驱动器是一个 FLEX 协议驱动器,它报告驱动器的常规容量,但也有在驱动器报告容量以上的偏移处可用的叠瓦式磁记录。如果您有兴趣,可以在T13 网站上找到该协议的详细信息。