FUA
命令通常意味着在信令完成之前,需要将数据提交给NVM
。
据我理解,不需要在FUA
命令之前将数据刷新到NVM
。
LBA0可以先完成FUA,然后在缓存中完成LBA0吗?这两家公司有订货要求吗?
Write LBA0 with X
Write LBA1 with Y
Write LBA0 with Z and FUA is set.
READ LBA0
能读到LBA0
的X或Z吗?
FLUSH
的:如果flush
附带了一个数据:
在执行BIO
之前,必须提交写缓存中的数据。
如果FS
发出以下问题:
WRITE LBA0 with X (1)
FLUSH
WRITE LBA0 with Y (2)
如果(2)在FLUSH
完成后发出,则保证排序。但是,如果(2)是在FLUSH
完成之前发出的,那么两者都处于飞行命令中,那么(2)能在FLUSH
之前完成吗?
发布于 2017-01-12 11:04:56
我的理解是Linux内核处理块I/O屏障的当前状态是由https://lwn.net/Articles/400541/描述的。
也就是说,排队的请求(无论是在软件或硬件中(NCQ,TCQ))通常是无序的,内核或硬件可以自由地按任何顺序处理它们。如果需要排序,则更高级别(例如文件系统)负责等待完成。
比方说,如果文件系统想在写日志提交记录X之前将A、B、C写在磁盘上,那么它必须执行如下操作
现在,关于你的问题:
https://stackoverflow.com/questions/41602619
复制相似问题