|
次のページ
前のページ
目次へ
5. ミニキャッシュと downcall
Coda FS ドライバは、upcall の回数を抑制するために、 一般的にカーネルコードは、Venus が管理する ViceFid と共に内部のファイル ハンドル (BSD で vnode, Linux で inode, Windows で FileHandle と呼ばれま す) にリンクした構造体を管理しなければなりません。その理由は、頻繁な双方 向の変換が、upcall を行ったり、その upcall の結果を使用する際必要となる からです。こういったリンクされたオブジェクトは cnode と呼ばれます。 現行のミニキャッシュの実装は以下を記録したキャッシュエントリになっていま す -
Coda FS ドライバにおける キャッシュエントリがもう有効ではないことを示す情報を得た場合、Venus はカー ネルに downcall を発行するでしょう。downcall は Coda FS ドライバに捕獲さ れ、キャッシュを以下に述べる種類で無効にします。downcall のデータがカー ネルメモリ内に読み出せない場合を除き、Coda FS ドライバはエラーを返しませ ん。
5.1 INVALIDATE
このコールの情報はありません。
5.2 FLUSH
引き数 なし 概要 ネームキャッシュ全体をフラッシュします。 詳細 Venus は起動時および終了時にこのコールを発行します。無効なキャッ シュ情報の保持を防ぎます。カーネルのネームキャッシュを動的に切れるオペレー ティングシステムもあります。これが終了した時 downcall は終了します。
5.3 PURGEUSER
引き数 struct cfs_purgeuser_out {/* CFS_PURGEUSER is a venus->kernel call */ struct CodaCred cred; } cfs_purgeuser; 詳細 Cred を持つキャッシュ内のすべてのエントリを削除します。このコー ルは、ユーザ用のトークンの期限が切れるかフラッシュされる時に発行されます。
5.4 ZAPFILE
引き数 struct cfs_zapfile_out { /* CFS_ZAPFILE is a venus->kernel call */ ViceFid CodaFid; } cfs_zapfile; 詳細 ディレクトリの vnode と名前の組みを持つすべてのエントリを削除 します。キャッシュされた vnode の属性が失効となった結果、発行されます。 注記 コールは NetBSD および Mach で正しい名前ではありません。ミニ
キャッシュの
5.5 ZAPDIR
引き数 struct cfs_zapdir_out { /* CFS_ZAPDIR is a venus->kernel call */ ViceFid CodaFid; } cfs_zapdir; 詳細 ディレクトリ
5.6 ZAPVNODE
引き数 struct cfs_zapvnode_out { /* CFS_ZAPVNODE is a venus->kernel call */ struct CodaCred cred; ViceFid VFid; } cfs_zapvnode; 詳細 引き数で渡される
5.7 PURGEFID
概要 引き数 struct cfs_purgefid_out { /* CFS_PURGEFID is a venus->kernel call */ ViceFid CodaFid; } cfs_purgefid; 詳細 ファイルのための属性をフラッシュします。それがディレクトリ (や 変な vnode) なら、ネームキャッシュからのその子を除去し、ネームキャッシュ からファイルを削除します。
5.8 REPLACE
概要 名前のコレクションのための Fid を置きかえます。 引き数 struct cfs_replace_out { /* cfs_replace is a venus->kernel call */ ViceFid NewFid; ViceFid OldFid; } cfs_replace; 詳細 このルーチンはネームキャッシュの中の ViceFid を別のものに置き かえます。切断されている間ローカルに割当てられたテンポラリ fid をグロー バル fid に置きかえるための再統合の間、それらの fid の参照カウントが 0 でないときでさえ、Venus に許可を追加します。
次のページ 前のページ 目次へ |
[ |