可以在直接设备上使用libaio的向量读写函数吗?

时间:2015-08-01 01:03:25

标签: c++ linux-device-driver aio

关于与直接设备一起使用的libaio文档说,读取和写入偏移必须是扇区对齐的,例如,典型SSD / HDD的512字节的倍数。网上提供的一些信息还说,用作源和目的地的用户空间缓冲区也需要对齐。

使用直接设备时,矢量读写功能的对齐限制是什么?我假设操作的磁盘端仍然需要扇区对齐(它毕竟是与封面下的块设备对话)。我的分散收集列表可以将小块散布到用户空间中的非对齐目标吗?

我正在研究debian Jessie,并已经验证了对libaio中矢量I / O的支持。

1 个答案:

答案 0 :(得分:0)

通过编写一些测试代码建立的简短答案是否定的。传输的磁盘侧和存储器侧必须是扇区对齐的。非扇区对齐操作事件中返回的错误代码是-22(未知错误)。

如果这有用的话会很有趣。底层硬件(SSD和AHCI兼容控制器)能够与任何偶数地址进行DMA。