Show Table of Contents
このページには機械翻訳が使用されている場合があります (詳細はこちら)。
B.5. glock ホルダー
表B.5「Glock ホルダーフラグ」 には、異なる glock ホルダーのフラッグの意味をまとめています。
表B.5 Glock ホルダーフラグ
フラグ | 名前 | 意味 |
---|---|---|
a | Async | glock の結果を待ちません (結果を後でポールします) |
A | Any | 互換性のあるロックモードはすべて受け入れ可能です |
c | No cache | ロック解除時に DLM ロックを即時に降格します |
e | No expire | 後続のロック取り消し要求を無視します |
E | Exact | 完全一致するロックモードでなければなりません |
F | First | ホルダーがこのロックに最初に許可される場合に指定します |
H | Holder | 要求したロックが許可されたことを示します |
p | Priority | キューの先頭にある待機ホルダー |
t | Try | 「try」ロックです |
T | Try 1CB | コールバックを送信する「try」ロックです |
W | Wait | 要求完了の待機中にセットされます |
前述したように、H (holder) および W (wait) はそれぞれ、許可されたロック要求と、キューに追加されたロック要求に設定されるので、最も重要なホルダーフラグです。一覧内でのホルダーの順序付けは重要です。許可されたホルダーがある場合は、必ずキューの先頭に配置され、キューに追加されたホルダーがその後に続きます。
許可されたホルダーがない場合には、一覧の最初のホルダーが次の状態変更をトリガーします。降格の要求は、ファイルシステムからの要求よりも常に優先度が高いとみなされるため、この要求によって必ずしも直接、要求された状態への変更が行われるわけではありません。
glock のサブシステムは、2 種類の "try" ロックをサポートします。これらのロックは、(適切な back-off および retry で) 通常の順序でのロックの取得を可能にし、他のノードが使用中のリソースを回避するために使用できるため、いずれも有用です。通常の t (try) ロックは、その名前が示すように "try" ロックであり、特別なことは何もしません。一方、T (
try 1CB
) ロックは、DLM が単一のコールバックを互換性のないロックホルダーに送信する以外は t ロックと同じです。T (try 1CB
) ロックの使用例の 1 つに、iopen
ロックとの併用があります。このロックは、inode の i_nlink
数がゼロのときにノードを判別して、どのノードが inode の割り当て解除を行っているかを判断するために使用されます。iopen
glock は通常共有の状態で保持されますが、i_nlink
数がゼロになり、->delete_inode
() が呼び出されると、T (try 1CB
) が設定された状態で排他的ロックを要求します。ロックが許可された場合は、inode の割り当て解除を継続します。ロックが許可されない場合は、ロックの許可を阻止していたノードにより glock に D (降格) フラグが設定されます。このフラグは、割り当て解除が忘れられないように ->drop_inode
() が呼び出されたときにチェックされます。
これは、リンクカウントがゼロでありながら開いている inode が、最終の
close
() が発生するノードによって割り当て解除されることを意味します。また、inode のリンクカウントがゼロに減少するのと同時に、その inode は、リンクカウントがゼロでありながらもリソースグループビットマップで依然として使用中であるという特別の状態としてマークされます。この関数は、ext3 ファイルシステムの孤立アイテム一覧と同様に、後に続くビットマップのリーダーに、再使用可能な潜在的領域があることを知らせて、再利用を試みます。
このページには機械翻訳が使用されている場合があります (詳細はこちら)。