Linux 2.6 カーネルと NFSv3 でopen("fname", O_CREAT|O_EXCL)
有効になったのはいつですか? 現在の標準的なopen(2)
システム コールのドキュメント ( http://www.kernel.org/doc/man-pages/online/pages/man2/open.2.html ) には、すべて問題ないと書かれています。
- O_EXCL
- ...
On NFS, O_EXCL is only supported when using NFSv3 or later on kernel
2.6 or later. In NFS environments where O_EXCL support is not
provided, programs that rely on it for performing locking tasks will
contain a race condition. Portable programs that want to perform
atomic file locking using a lockfile, and need to avoid reliance on NFS
support for O_EXCL, can ...
これは、すべての 2.6 カーネルに問題がないかのように見えますが、man ページの変更ログ(ca late kernel 2.6.23) は、2.6.0 が公開されてから4 年後に有効性を示し始めており、Web には、この 1 年以内にこの使用を非難するボード ユーザーがあふれています。または2つ。このセットアップを RHEL 5 (2.6.18) システムで使用したいのですが、本当に安全になったかどうかを特定できませんでした。誰も決定的な答えを持っていますか?