哪种情况会被认为是正确的?
无论 LBA 是 32 位还是 64 位,都使用 Read 16 命令进行读取。
如果最大 LBA 为 32 位,则执行 Read 10 命令,如果最大 LBA 为 64 位,则执行 Read 16 命令。
每种选择的优缺点是什么?
我知道对于读取容量命令,运行 10 是正确的,如果它返回 FFFFFFFFh,则运行 16。为什么会这样? Read Capacity 16 命令适用于这两种情况,甚至根本不需要 Read Capacity 10。
最佳答案
请记住,在许多情况下,SCSI 具有多种“大小”命令的原因是因为 SCSI 是一个非常古老的协议(protocol)。 (它于 1986 年首次标准化,并在此之前进行了一段时间的开发!)当时,大型 SCSI 设备的范围在几百兆字节以下——即使是 32 位 LBA 也是如此当时认为过分。 64 位 LBA 命令直到很久以后才出现。
这里的问题实际上只是您是否要支持这些旧设备。如果这样做,您将需要使用 Read (10) 在“小型”设备上进行读取,因为它们可能无法识别 Read (16)。同样,在读取容量 (16) 之前使用读取容量 (10) 是因为旧设备无法识别更大的版本。
关于c - SCSI 读取 10 与读取 16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25650070/