我尝试使用libaio访问块设备(例如/ dev / sdb)。 我工作正常,但我想知道如何使用libaio的API执行FUA(强制单元访问)。
我必须说我在这个问题上找到的文件很差,希望你们中的一个人能够帮助我。
答案 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