    !==
    !== File-Cacheing.txt for Samba release 2.0.7 26 Apr 2000
    !==
    翻訳者:	高橋基信 <monyo@samba.gr.jp>
    更新日:	1999/03/06

    データの「キャッシング」が問題を起こすという報告が幾つかあがって来てい
    ます。一般的に、バグレポートは以下のようなものです。

    - UNIX マシン上でファイルを作る。
    - そのファイルを Samba 経由で PC から見る。
    - ファイルを UNIX マシン上で修正する。
    - そのファイルをもう一度 Samba 経由で PC から見ると、修正した筈の点が
      見えない。

    最初に理解しておくべき点は、これは仕様だという点です!! SMB プロトコル
    は、「便宜的ロック(opportunistic locking)」と呼ばれる機能を持っています。
    これは、クライアントが「安全に」ファイルのデータをクライアント側でキャッ
    シングすることを可能にします。問題点は、このキャッシングは、全てのプログ
    ラムが Samba 経由でアクセスする時にしか安全でないと言う点です。SMB 以外
    のクライアントからアクセスした瞬間に、データの一貫性が損なわれてしまうの
    です。

    これには二つの解決案があります。最初の案は Samba にカーネルレベルのイ
    ンタフェースを実装するものです。それは、NFS やローカルプロセス経由での
    UNIX クライアントからのアクセスを許可しますが、Samba に oplock が
    「中断される」ことを通知することで、データの一貫性を強制するというものです。
    現在のところ、このインタフェースをサポートしているのは、SGI の IRIX
    6.5.3f 以上のバージョンのみです。しかし、このインタフェースは、現在
    Linux と FreeBSD の両方で、実装に向けた論議が続けられています。同様に、
    幾つかの UNIX ベンダもサポートに積極的です。

    二つ目の案は、UNIX と Windows の両方からアクセスする必要のある共有で、
    smb.conf の oplocks を無効にすることです。smb.conf(5) の "oplocks" と
    "veto oplock files" オプションを参照してください。不幸なことに、これは
    性能の低下を引き起こしますが、カーネルに手をいれない以上、Windows と
    UNIX の両方から更新を伴うファイルアクセスを行う際に、これを避けることは
    できません。

    注意点を二つ:

    Samba-1.9.18 以上は、oplocks をサポートしています。
    Samba-1.9.17 ではサポートされていません。

    また、Windows NT 4.0 の以下のレジストリエントリは、クライアント側で
    oplocks を無効にします。警告!! これは推奨される方法ではありません。
    このクライアントからサーバへのアクセスは、*すべて* oplocks が無効に
    なります。

    =====================================================================

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters]
    "BufFilesDenyWrite"=dword:00000000
    "BufNamedPipes"=dword:00000000
    "UseOpportunisticLocking"=dword:00000000
    "DormantFileLimit"=dword:00000000

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters\Linkage]
    "UtilizeNtCaching"=dword:00000000

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Filesystem]
    "Win95TruncateExtensions"=dword:00000000

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanManServer\Parameters]
    "EnableOpLockForceClose"=dword:00000001
    "EnableOpLocks"=dword:00000000

    =====================================================================

    以下のレジストリエントリは、Windows 9x で、同様の設定を行うものです。

    [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VREDIR]
    "DiscardCacheOnOpen"=string:00000001