首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >FUA,冲洗和排序

FUA,冲洗和排序
EN

Stack Overflow用户
提问于 2017-01-11 23:23:45
回答 1查看 1.5K关注 0票数 3

FUA命令通常意味着在信令完成之前,需要将数据提交给NVM

据我理解,不需要在FUA命令之前将数据刷新到NVM

  1. 如果我们有LBA0 (在缓存中)、LBA1(缓存)、LBA0和FUA,

LBA0可以先完成FUA,然后在缓存中完成LBA0吗?这两家公司有订货要求吗?

  1. 同样,如果我们有命令:
代码语言:javascript
运行
复制
Write LBA0 with X

Write LBA1 with Y

Write LBA0 with Z and FUA is set. 

READ LBA0 

能读到LBA0的X或Z吗?

  1. 另一个问题是关于FLUSH的:

如果flush附带了一个数据:

在执行BIO之前,必须提交写缓存中的数据。

如果FS发出以下问题:

代码语言:javascript
运行
复制
WRITE LBA0 with X (1) 

FLUSH

WRITE LBA0 with Y (2)

如果(2)在FLUSH完成后发出,则保证排序。但是,如果(2)是在FLUSH完成之前发出的,那么两者都处于飞行命令中,那么(2)能在FLUSH之前完成吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-12 11:04:56

我的理解是Linux内核处理块I/O屏障的当前状态是由https://lwn.net/Articles/400541/描述的。

也就是说,排队的请求(无论是在软件或硬件中(NCQ,TCQ))通常是无序的,内核或硬件可以自由地按任何顺序处理它们。如果需要排序,则更高级别(例如文件系统)负责等待完成。

比方说,如果文件系统想在写日志提交记录X之前将A、B、C写在磁盘上,那么它必须执行如下操作

  1. 提交A、B、C
  2. 等待A,B,C完成
  3. 发出刷新(这确保A、B、C从磁盘缓存到持久存储)
  4. 用FUA位集写X
    • 或者,如果HW不支持FUA,这可以由来模拟
      1. 写X
      2. 等待X完成
      3. 发行冲洗

现在,关于你的问题:

  1. 不,没有订购的要求。
  2. 没有具体说明。
  3. 我不确定,但我相信冲水是无序的,就像其他命令一样。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41602619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档