48位和28位ATA命令与ioctl

问题描述:

在发送ATA命令期间,我发现了几个分类。例如,第一个 - 我们可以将命令分为数据输入,数据输出和非数据命令。另一个分类可以是有48位命令和28位命令。第一个是用于120Gb的磁盘。48位和28位ATA命令与ioctl

问题是:我需要设置一些值,磁盘会知道它获得了48bit命令吗?例如,如果我通过控制器通过SATL或ATA PASS THROUGH命令发送带有ATA的SCSI命令。

在研究过程中,发现每个控制器都有自己的特性,具体取决于驱动器。这就是为什么执行ATA PASS THROUGH命令是如此困难的工作。

通过读取Linux驱动程序并检查使用ioctl发送了哪些结构,可以确定它是28位还是48位命令。因为48位逻辑块寻址(LBA)是在2006年以ATA-6标准引入的,所以检查软件的新特性也是非常重要的。现在大多数情况下,所有控制器都支持48位命令集,但是您仍然应该检查控制器是否支持它。

所以,这个问题的答案强烈依赖于使用控制器。