问题标签 [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 回答
664 浏览

driver - 无法通过 64 位的 CreateFile 与驱动程序通信

我是一名 scsi 驱动程序开发人员。

我编写了一个用户空间程序来通过 CreateFile 从驱动程序获取数据。

在 32 位 windows 环境下测试正常,但在 64 位下出现以下错误:

创建文件返回 -1。GetLastError() 将返回 2。 (ERROR_FILE_NOT_FOUND)

IoCreateSymbolicLink在驱动程序初始化时调用了它,当我使用 windbg 查看调试输出时它返回成功。

有人遇到过这种问题吗?

0 投票
1 回答
447 浏览

c++ - 使用 ntddscsi.h 出现编译错误

我在以下方面遇到了一些麻烦: #include <ntddscsi.h> 当我编译时(使用 NetBean 7.1 和 Cygwin C++ 编译器),我被告知我需要先定义“SCSI_PASS_THROUGH”才能使用它......但是在 ntddscsi.h 中,它被定义为:

任何人都知道到底出了什么问题?

0 投票
2 回答
429 浏览

windows - 如何在 Windows 中使用 c/c++ 从设备中读取字节

所以这是背景:

我有这个 SCSI 设备,其媒体上有原始数据(为简单起见,假设它包含 abc123)。此设备位于 Windows 计算机上。我想使用 C/C++ 初始化设备,打开它,向设备发送 SCSI 读取命令,并最终“读取”字节。

我搜索过类似的主题,但我不断获得 Linux/Unix 指南或 Visual C++(我无权访问)。

有谁知道开始这个的好方法?也许是一些示例代码,或者可能有人有一个教程;-)

先感谢您!

编辑:我正在使用 Cygwin。

0 投票
5 回答
2343 浏览

linux - Linux:写入被分成 512K 块

我有一个生成大量 SCSI 写入的用户空间应用程序(详情如下)。但是,当我查看到达 SCSI 目标的 SCSI 命令(即存储,由 FC 连接)时,某些东西会将这些写入分成 512K 块。

该应用程序基本上直接将 1M 大小的直接写入设备:

此代码导致发送两个 SCSI WRITE,每个 512K。

但是,如果我发出直接 SCSI 命令,没有块层,写入不会拆分。我从命令行发出以下命令:

我可以看到一个 1M 大小的 SCSI WRITE。

问题是,什么是拆分写入,更重要的是,它是否可配置?Linux 块层似乎是有罪的(因为 SG_IO 没有通过它)并且 512K 似乎太随意了,不是某种可配置的参数。

0 投票
1 回答
226 浏览

linux - 寻找 linux 2.6.33.20 内核源 SCSI 超时的创建/设置位置

在旧版本的内核(2.6.25.8)中,它位于函数 scsi_add_timer 和 scsi_delete_timer 中的 drivers/scsi/scsi_error.c 中:http ://www.cs.fsu.edu/~baker/devices/lxr/http/源/linux/drivers/scsi/scsi_error.c?v=2.6.25.8

我似乎在 2.6.33.20 内核的 scsi_error.c 中找不到任何类似的东西,我查看了其他文件(使用 grep 并搜索时间)并看到提到超时,但没有什么看起来像你重新设置定时器的超时值。

非常感谢任何帮助,我已经为此苦苦挣扎了一段时间。

谢谢!

0 投票
2 回答
3430 浏览

networking - iSCSI 数据传输数据包开销

诚然,这个问题与iSCSI Packet Header重叠,但我希望得到一个比为我更具体的问题提供的更具体的答案。

问题:iSCSI 和 SCSI 在传输数据以读取或写入时引入了多少开销?

我知道这是在数据输入和数据输出传输数据包中完成的,并且我知道 TCP/IP 和以太网会产生开销,但是 iSCSI/SCSI 需要哪些额外开销?我认识到 SCSI 协议数据单元 (PDU) 通过某种算法打包到 TCP 数据报中,但我不确定该算法。

我意识到发起者和目标之间需要进行完整的对话,我将忽略那部分。所以,我只想知道在读或写命令之后发送的数据包。

0 投票
1 回答
976 浏览

storage - SCSI 查询命令

我对 SCSI 和 SCST 非常陌生。我正在尝试在 SCSI 查询命令中引入新的页面代码,因此我最初使用页面代码 0x00 请求支持的页面列表。所以在 SCST 代码中,我提到了回复的长度和支持的页面代码。我保留了一个 printk 语句,并在通过 scst_vdisk.c 文件发送时检查了相同的内容,这很好。但是当我从 SCSI 端检查时,我的新值条目为零,而现有条目工作正常。我试图解码问题,但无法正确进行。

是否有任何过滤器阻止了适配器层或(通常存在这些检查的地方)的值,或者您能否告诉我如何解决问题的方法。

0 投票
1 回答
392 浏览

linux - 为什么在 sys_write() 期间有读取 SCSI 命令

我想了解sys_writescsi 设备上的 a 是如何工作的。因此我写了一个简单的测试程序,并在issue设备驱动的功能中添加了一些调试printk()来打印ata_queued_cmd->scsicmd->cmnd.

/var/log/messages我可以看到以下发出的命令:

我要写的 512 字节应该是块大小。这就是我得到这个值的方式:

对我来说非常重要的是,数据是断电安全写入的。这就是为什么我要等待返回的原因O_SYNC。现在我有一些问题:

  • 为什么READ前面有一个WRITE
  • SYNCHRONIZE CACHE如果数据在驱动器的内部缓存中,我能保证吗?还是我可以做更多的事情来进行安全写入?

非常感谢你 :)

0 投票
1 回答
71 浏览

python - SCSA 逻辑字节下划线?

我有来自 SCSA 命令的 45 个字节用于 LBU:

0, 0, 4, 8, 0, 0, 0

我尝试将其导出为 python 中的 64 位 uuint LBU:

这个对吗?也许不吧...

谢谢

0 投票
1 回答
531 浏览

linux - 如何将 scsi 写入命令发送到内核模块中的 SSD

我尝试在 SSD 上尽可能快地写入。同步写入非常重要,因为我们需要知道数据是否是断电安全写入的。

我考虑过自己发送 scsi 命令,以避免大多数 Linux 内核块 IO 堆栈(在我们的用例中不需要)。为了避免内核进入/退出开销,它应该是一个内核模块。

  • 您知道如何将 scsi 写入发送到设备的示例吗?
  • 你将如何实现这一点?
  • 或者为什么 scsi 层是错误的入口点?