9.5. Glock 拥有者(holder)


下表显示了不同的 glock 持有者标记的含义。

表 9.5. Glock 持有者标记
标记名称含义

a

Async

不要等待 glock 结果(以后轮询结果)

A

Any

接受任意兼容锁定模式

c

No cache

取消锁定时,立即降级 DLM 锁定

e

No expire

忽略随后的锁定取消请求

E

Exact

必须有准确的锁定模式

F

First

设定赋予这个锁定的第一个拥有者

H

Holder

表示赋予请求的锁定

p

Priority

在队列头启用 ENQUEUE 拥有者

t

Try

"try" 锁定

T

Try 1CB

发送回调的 "try" 锁定

W

Wait

等待请求完成的设置

如前面提到的,最重要的拥有者标志是 H(拥有者)和 W(等待),因为它们分别被设置在赋予的锁定请求和锁定请求中。在队列中的拥有者的顺序非常重要。如果有被允许的所有者,则他们将总位于队列的前头,后接其他进入队列的所有者。

如果没有被允许的所有者,列表中的第一个拥有者就是触发下一个状态更改的拥有者。由于总是认为降级请求比文件系统的请求优先级高,因此可能并不总直接导致对请求的状态的更改。

glock 子系统支持两种类型的 "try" 锁定。这两类都比较有用,因为它们允许把锁定移出正常的顺序(使用适当的 back-off 和 retry),且它们可以被用来帮助避免资源被其他节点使用。正常的 t(try) 锁定如其名字所示,它是一个 "try"锁定,不会做任何特殊操作。另一方面,T(try 1CB)锁与 t 锁相同,除了 DLM 会向当前不兼容的锁持有者发送一个回调。T(try 1CB)锁的一个用处是带有 iopen 锁,其用于在 inode 的 i_nlink 计数为零时确定哪个节点负责释放 inode 。iopen glock 通常处于共享状态,但当 i_nlink 计数变为零且 →evict_inode()被调用时,它将请求一个设置了 T (try 1CB) 的独占锁。如果允许了锁定,它将继续取消内节点的配置。如果锁没有授权,则会导致阻止锁授权的节点使用 D(降级)标记标记其 glock,该标记会在 →drop_inode()时检查,以确保释放不会被忘记。

这意味着,具有零链接数但仍然处于打开状态的 inode 将由在其上发生最终 close() 的节点释放。另外,当内节点的链接计数降为 0 时,内节点被标记为处于具有零链路计数的特殊状态,但仍在资源组位映射中使用。此功能和 ext3 文件系统的孤儿列表类似,它允许位图的任何后续读取器知道有潜在的可能回收的空间,并尝试回收它。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.