使用libaio从磁盘读取数据损坏问题

时间:2016-02-29 06:58:01

标签: c++ iscsi

使用libaio从iscsi磁盘读取数据时,我遇到数据损坏问题。

执行的步骤:

  • 使用带有4K Allignemnt的posix_memalign分配缓冲区(1MB)。
  • 在提交io之前用9填充缓冲区。
  • 使用O_DIRECT标志打开iscsi磁盘。
  • 使用libaio的io_submit
  • 提交阅读请求
  • 并行执行vfork()
  • 调用io_getevents并等待io完成
  • 检查在io_getevents中检索到的缓冲区的crc,以检查数据是否一致。

对于某些偏移,CRC匹配失败。

某些io的CRC校验失败。在提交io请求之前,我用一个模式“9”填充缓冲区,并且我已经分析了损坏的缓冲区,并且观察到缓冲区中的某些数据部分保持不变,即缓冲区的某些部分中存在相同的9。 缓冲区使用posix_memalign()进行4K分配。

有人还面临类似的问题吗?如果有任何已知限制,请与我分享。

0 个答案:

没有答案