问题标签 [scsi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
492 浏览

usb - 使用ioctl向usb设备发送自定义scsi命令

scsi我在一个 USB 设备中实现了一些自定义命令。一种是:{ 0xB1, 0xF5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }

我使用以下代码将这个自定义命令发送到 USB 设备。操作系统是 ubuntu 14.04。

}

我用debugfs捕获usb总线上发出的命令,发现发出的命令是:{ 0xB1, 0x15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }.

第二个字节从0xF5变为0x15。通过尝试其他一些命令,我​​发现第二个字节的前三位总是设置为零。

为什么ioctl发送出去时会改变命令内容?

我怎样才能ioctl发送与我定义的完全相同的命令?

0 投票
1 回答
251 浏览

scsi - SCSI READ CAPACITY 命令中 PMI 位的含义

我正在查看 SBC-3 项目 5.15(读取容量(10)命令)。PMI 位(CDB 中字节 8 的位 0)的描述复制如下:

“设置为 1 的 PMI 位指定设备服务器返回关于逻辑块地址字段中指定的最后一个逻辑块的信息,然后可能会遇到数据传输中的大量供应商特定延迟。”

我的问题:

  • 如果 PMI 位和逻辑块地址(CDB 中的字节 2-5)都不为零,我(作为目标)是否仍应报告磁盘上的最后一个 LBA?
  • 如果不是上述情况,那么在这种情况下应该报告什么?
  • 设置 PMI 位后,我应该如何处理逻辑块地址(字节 2-5)值?

(我知道,PMI 位在 SBC-4 中已过时,但我仍需要根据当前标准实现此功能)

0 投票
2 回答
255 浏览

redhat - 如何找到所有连接设备的 scsi 超时?- redhat v 3

有人可以帮我找到连接设备(磁盘)的默认 SCSI 超时吗?红帽版本:3 内核:2.4.21。

提前谢谢:)

0 投票
1 回答
1370 浏览

linux - 关于 SCSI 预留

我正在尝试编写一个程序来阻止使用 SCSI 2 保留的 LUN。

在 SCSI 2 保留中,LUN 是否可以由具有不同路径的同一主机保留,或者 ITL 连接只是单个路径。

例如:假设主机尝试从同一目标保留已保留的 LUN,但使用目标的不同端口。这可能吗?

基本上,LUN 保留仍然是同一台主机,但来自不同的路径。

[编辑] 对于上述问题,我已经得到了所需的答复,但还有另一个问题。假设主机在 LUN X 上有保留,连接断开或主机发出注销。预订会发生什么?是依靠主机驱动程序来清除保留并清除其数据,还是保留保留与其他主机尝试保留相同的 LUN 时会发生冲突。我尝试用谷歌搜索,但找不到与此问题相关的规格。

0 投票
1 回答
465 浏览

scsi - 在映射块上比较并写入?

SBC-4 中的 COMPARE AND WRITE 命令描述没有说明要替换的逻辑块范围包含未映射块的情况。

在目标方处理这种情况的常见做法是什么?当发起者要求用有意义的东西替换未映射的块时,目标是否应该假设验证步骤总是成功的?

0 投票
1 回答
529 浏览

windows - D 中的 Windows SCSI ReadCapacity16

我正在尝试使用 D 将 scsi ReadCapacity16 (0x9E) 发送到 Windows 上的卷。CDB 是规范的,我的 ReadCapacity16 在 Linux 上工作,scsi Inquiries 在 Windows 上工作。只有 Windows 上的非查询调用无法使用 Windows 内核中的“不正确的功能”。

既然只有查询有效,那么通过 Windows 内核发送非查询有什么技巧吗?关于让它工作的任何提示?我研究了几个星期并没有解决这个问题。

这是 CDB 的一个示例:

\\.\physicaldrive0 CDB 缓冲区内容:9e 10 00 00 00 00 00 00 - 00 00 00 00 00 20 00 00 sgio.exceptions.IoctlFailException@sgio\exceptions.d(13):ioctl 错误代码为 1。函数不正确。

这里是将 CDB 复制到 DeviceIoControl 调用的缓冲区的位置,这与成功发送 Inquiry 命令(但 readcap 失败)的代码路径相同。github中的代码粘贴在下面:

0 投票
2 回答
2264 浏览

python - 用于访问驱动器低级详细信息的 python 库(SMART、scsi generic、ata security 等)

是否有任何 python 库可以访问低级磁盘详细信息?

我需要:

  • 智能属性
  • 序列号
  • 固件版本
  • SATA 物理计数器
  • SMART 扩展自检日志记录
  • 外壳/字母/sg-设备映射
  • ATA 安全命令访问
  • SCSI 通用访问(sg_inq、sg_format 等)

除了解析 smartctl、hdparm 和 sg3-utils 的输出之外,还有什么想法吗?

谢谢!

0 投票
0 回答
675 浏览

scsi - 访问 lun 大于 255 的 SCSI 设备

我是使用 Ubuntu 服务器 12.04.5 LTS 的菜鸟。我需要访问逻辑单元号(LUN)超过 255 的 SCSI 设备。据我所知,我们看不到 lun 超过 255 的 SCSI 设备。听说 lun 有平面空间寻址模式支持 lun 超过 255。我可以在 Ubuntu 中使用平面空间寻址访问卷(SCSI 设备)吗?如果是,怎么做?

如果您需要更多信息,请回复,如果我的问题有任何错误,请原谅。

0 投票
0 回答
941 浏览

c++ - ioctl(SG_IO) 有效,写入/读取对无效

我正在尝试执行 scsi 查询命令。我设法做到了:

我应该如何重写我的代码以改用写/读对?

SG_IO 是一个阻塞操作,它忽略O_NONBLOCK标志,我需要确保调用不会阻塞。

我用这些文章作为参考:

http://www.tldp.org/HOWTO/SCSI-Generic-HOWTO/write.html http://www.tldp.org/HOWTO/SCSI-Generic-HOWTO/read.html

...并编写了这样的代码:

但是这段代码会导致状态字段和感知缓冲区中的垃圾:

0 投票
1 回答
380 浏览

scsi - 使用 scsi cmd 获取设备最大链接速度

我正在寻找可用于获取设备最大链接功能的 scsi 命令。

我可以使用 scsi MODE SENSE(第 19 页)读取 phy 描述符并获取链接速度吗?但它与最大链接速度和协商链接速度有何不同?