c - SCSI 读取 10 与读取 16

标签 c hard-drive scsi

哪种情况会被认为是正确的?

  1. 无论 LBA 是 32 位还是 64 位,都使用 Read 16 命令进行读取。

  2. 如果最大 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/

相关文章:

c++ - 为什么这个函数调用后数组发生了变化?

linux - 在Ubuntu中增加HD空间

java - 将文件写入随机不连续的硬盘位置

python - 为什么多个进程会变慢?

linux - 在 Linux 上重新扫描 LUN

c - 如何使用 Visual Studio 2017 只编译 C 代码而不考虑 C++?

c - 为什么特定的 C 数据类型在多个标准头文件中声明?

c - 读入缓冲区时内存泄漏

macos - 在 Mac OS X 中向 SCSI 设备发送特定的 SCSI 命令

当传输长度超过 1345 时,Linux scsi ata cmd 写入或读取有时工作,有时不工作