Re: NFS fcntl(F_SETLK) problem (Linux->MacOSX)
しらいです。
昔は「NFS では lock が効かない」は常識だったので隔世の感が。
In article <YAS.06Sep18155520@kirk.is.tsukuba.ac.jp>,
Yasushi Shinjo <yas@is.tsukuba.ac.jp> wrote:
>新城@筑波大学情報です。こんにちは。
>ロックの問題ですが、具体的な症状としては、ファイルをロックし
>ようとすると固まってしまうということです。クライアントは、
>Linux、サーバは、MacOSX です。
Linux の NFS は実装が不完全なことで有名ですが、特に lockd
は上手く働かないことが多いようです。
相手が同じ Linux kernel で同じ architecture だと割と安定し
てますが、それでも失敗する時には失敗するので、こと Linux に
関しては昔の fcntl() の常識を適用すべきかと。
因みに、経験則から言うと、deadlock する時には「client 数が
多過ぎ」とか何とか吐いてた気がするので、unlock されるのを待
っている client が多いと何かまずいのかも。
>情報ありがとうございます。flock() は固まらないだけで、ロック
>としては働いていないということかもしれませんね。
>fcntl(F_SETLK) に問題があるからといってねflock() で代替する
>というのは、危ないですね。
glibc を使う限りは lockf() も fcntl() を使って lock 機構を
実装しているように見えるので、lockf() に逃げるという解もあり
ません。
flock() に関しては、Linux kernel 2.x 以降では独立の system
call なので、man page のとおり「NFS で使えない別の lock 機構」
ですが、kernel 1.x だと fcntl() を使うので同じ機構ですね。
--
しらい たかし
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735