在Linux上使用libaio发送FUA请求

时间:2015-11-17 20:51:43

标签: linux aio block-device

我尝试使用libaio访问块设备(例如/ dev / sdb)。 我工作正常,但我想知道如何使用libaio的API执行FUA(强制单元访问)。

我必须说我在这个问题上找到的文件很差,希望你们中的一个人能够帮助我。

1 个答案:

答案 0 :(得分:1)

不幸的是,你不能。界面太有限了。但您应该可以使用SG_IO ioctl()SYNCHRONIZE CACHE (10) (16)。也就是说,如果您的设备支持该命令。 SYNCHRONIZE CACHE允许您指示设备向介质提交一系列逻辑块。

请参阅sg_sync命令的联机帮助页:http://manpages.ubuntu.com/manpages/trusty/man8/sg_sync.8.html

并在此处下载最新的sg3_utils来源:http://sg.danny.cz/sg/sg3_utils.html(截至目前,版本1.41 http://sg.danny.cz/sg/p/sg3_utils-1.41.tar.xz)。查看sg_sync命令源以查看如何调用ioctl。

ioctl(SG_IO)块,但有一种方法可以使用非阻塞I / O来处理这些命令。请参阅SCSI Generic HOWTO:http://sg.danny.cz/sg/p/sg_v3_ho.html