gpt4 book ai didi

linux - FUA,冲洗和订购

转载 作者:太空狗 更新时间:2023-10-29 11:12:33 24 4
gpt4 key购买 nike

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

根据我的理解,在 FUA 命令之前没有要求将数据刷新到 NVM

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

是否可以先完成具有 FUA 的 LBA0,然后再完成 Cache 中的 LBA0?两者有顺序要求吗?

2。同样,如果我们有命令:

Write LBA0 with X

Write LBA1 with Y

Write LBA0 with Z and FUA is set.

READ LBA0

读取 LBA0 可以返回 X 或 Z 吗?


3。另一个问题是关于FLUSH的:

如果 flush 带有数据:

写入缓存中的数据必须在标记为 Flush 的 BIO 被执行之前提交。

如果 FS 问题:

WRITE LBA0 with X (1) 

FLUSH

WRITE LBA0 with Y (2)

如果 (2) 在 FLUSH 完成后发出,则顺序得到保证。但是,如果 (2) 在 FLUSH 完成之前发出,那么两者都在飞行命令中,(2) 可以在 FLUSH 之前完成吗?

最佳答案

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

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

比如说,如果一个文件系统想要在写入日志提交记录 X 之前将 A、B、C 写到磁盘上,它必须做类似的事情

  1. 提交 A、B、C
  2. 等待A、B、C完成
  3. 发出 FLUSH(确保 A、B、C 从磁盘缓存转到持久存储)
  4. 写 X 并设置 FUA 位
    • 或者,如果 HW 不支持 FUA,可以通过以下方式模拟
      1. 写X
      2. 等待X完成
      3. 发出 FLUSH

现在,对于您的问题:

  1. 没有,没有订购要求。

  2. 未指定。

  3. 我不确定,但我相信 FLUSH 是无序的,就像其他命令一样。

关于linux - FUA,冲洗和订购,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41602619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com