问题标签 [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.
driver - 无法通过 64 位的 CreateFile 与驱动程序通信
我是一名 scsi 驱动程序开发人员。
我编写了一个用户空间程序来通过 CreateFile 从驱动程序获取数据。
在 32 位 windows 环境下测试正常,但在 64 位下出现以下错误:
创建文件返回 -1。GetLastError() 将返回 2。 (ERROR_FILE_NOT_FOUND)
我IoCreateSymbolicLink
在驱动程序初始化时调用了它,当我使用 windbg 查看调试输出时它返回成功。
有人遇到过这种问题吗?
c++ - 使用 ntddscsi.h 出现编译错误
我在以下方面遇到了一些麻烦:
#include <ntddscsi.h>
当我编译时(使用 NetBean 7.1 和 Cygwin C++ 编译器),我被告知我需要先定义“SCSI_PASS_THROUGH”才能使用它......但是在 ntddscsi.h 中,它被定义为:
任何人都知道到底出了什么问题?
windows - 如何在 Windows 中使用 c/c++ 从设备中读取字节
所以这是背景:
我有这个 SCSI 设备,其媒体上有原始数据(为简单起见,假设它包含 abc123)。此设备位于 Windows 计算机上。我想使用 C/C++ 初始化设备,打开它,向设备发送 SCSI 读取命令,并最终“读取”字节。
我搜索过类似的主题,但我不断获得 Linux/Unix 指南或 Visual C++(我无权访问)。
有谁知道开始这个的好方法?也许是一些示例代码,或者可能有人有一个教程;-)
先感谢您!
编辑:我正在使用 Cygwin。
linux - Linux:写入被分成 512K 块
我有一个生成大量 SCSI 写入的用户空间应用程序(详情如下)。但是,当我查看到达 SCSI 目标的 SCSI 命令(即存储,由 FC 连接)时,某些东西会将这些写入分成 512K 块。
该应用程序基本上直接将 1M 大小的直接写入设备:
此代码导致发送两个 SCSI WRITE,每个 512K。
但是,如果我发出直接 SCSI 命令,没有块层,写入不会拆分。我从命令行发出以下命令:
我可以看到一个 1M 大小的 SCSI WRITE。
问题是,什么是拆分写入,更重要的是,它是否可配置?Linux 块层似乎是有罪的(因为 SG_IO 没有通过它)并且 512K 似乎太随意了,不是某种可配置的参数。
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 并搜索时间)并看到提到超时,但没有什么看起来像你重新设置定时器的超时值。
非常感谢任何帮助,我已经为此苦苦挣扎了一段时间。
谢谢!
networking - iSCSI 数据传输数据包开销
诚然,这个问题与iSCSI Packet Header重叠,但我希望得到一个比为我更具体的问题提供的更具体的答案。
问题:iSCSI 和 SCSI 在传输数据以读取或写入时引入了多少开销?
我知道这是在数据输入和数据输出传输数据包中完成的,并且我知道 TCP/IP 和以太网会产生开销,但是 iSCSI/SCSI 需要哪些额外开销?我认识到 SCSI 协议数据单元 (PDU) 通过某种算法打包到 TCP 数据报中,但我不确定该算法。
我意识到发起者和目标之间需要进行完整的对话,我将忽略那部分。所以,我只想知道在读或写命令之后发送的数据包。
storage - SCSI 查询命令
我对 SCSI 和 SCST 非常陌生。我正在尝试在 SCSI 查询命令中引入新的页面代码,因此我最初使用页面代码 0x00 请求支持的页面列表。所以在 SCST 代码中,我提到了回复的长度和支持的页面代码。我保留了一个 printk 语句,并在通过 scst_vdisk.c 文件发送时检查了相同的内容,这很好。但是当我从 SCSI 端检查时,我的新值条目为零,而现有条目工作正常。我试图解码问题,但无法正确进行。
是否有任何过滤器阻止了适配器层或(通常存在这些检查的地方)的值,或者您能否告诉我如何解决问题的方法。
linux - 为什么在 sys_write() 期间有读取 SCSI 命令
我想了解sys_write
scsi 设备上的 a 是如何工作的。因此我写了一个简单的测试程序,并在issue
设备驱动的功能中添加了一些调试printk()
来打印ata_queued_cmd->scsicmd->cmnd
.
在/var/log/messages
我可以看到以下发出的命令:
我要写的 512 字节应该是块大小。这就是我得到这个值的方式:
对我来说非常重要的是,数据是断电安全写入的。这就是为什么我要等待返回的原因O_SYNC
。现在我有一些问题:
- 为什么
READ
前面有一个WRITE
? SYNCHRONIZE CACHE
如果数据在驱动器的内部缓存中,我能保证吗?还是我可以做更多的事情来进行安全写入?
非常感谢你 :)
python - SCSA 逻辑字节下划线?
我有来自 SCSA 命令的 45 个字节用于 LBU:
0, 0, 4, 8, 0, 0, 0
我尝试将其导出为 python 中的 64 位 uuint LBU:
这个对吗?也许不吧...
谢谢
linux - 如何将 scsi 写入命令发送到内核模块中的 SSD
我尝试在 SSD 上尽可能快地写入。同步写入非常重要,因为我们需要知道数据是否是断电安全写入的。
我考虑过自己发送 scsi 命令,以避免大多数 Linux 内核块 IO 堆栈(在我们的用例中不需要)。为了避免内核进入/退出开销,它应该是一个内核模块。
- 您知道如何将 scsi 写入发送到设备的示例吗?
- 你将如何实现这一点?
- 或者为什么 scsi 层是错误的入口点?