C-访问超出报告容量的块设备数据



我有一个SATA块设备,该设备报告了一个小于其可访问空间的容量,我想使用Linux创建的文件,块设备。因此,我希望使用从Open返回的描述符操作({"/dev/sda", O_RDWR(。但是,当我尝试使用lseek来寻找设备的容量时,我会遇到错误,而ERRNO设置为EINVAL (22)。是否可以在不修改设备驱动程序的情况下访问设备的容量,而在使用open()返回的文件描述符时?

我的Linux版本是Centos 7,带有内核3.10.0-514.21.1.el7.x86_64,尽管即使这些解决方案涉及其他Linux发行版,我也会对解决方案感兴趣。

编辑:我与之合作的驱动器是一个Flex协议驱动器,该驱动器报告了驱动器的常规容量,但还具有超过报告的驱动器能力的偏移量。如果您有兴趣,则可以在T13网站上找到此协议的详细信息。

如果我没记错的话,该错误是因为设备本身无法读取或写入该圆柱体的原因,这表明它可能不存在。请注意,许多制造商使用1000b = 1KB等,该文件系统也保留了自己的空间。

简短的答案是,您没有。该设备只会报告您可以使用的空间,并且也不会报告缓存尺寸。此错误报告不是在操作系统级别,而是在设备上。

相关内容

  • 没有找到相关文章

最新更新