[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[FDclone-users:00494] Re: .fd_history was lost



 さっそくの対応ありがとうございます。

At Mon, 10 Apr 2006 23:13:29 +0900,
Takashi SHIRAI wrote:
>  ふむ。確かに NFS では lock が効かないので link(2) 辺りを使
> って疑似 lock をかけるのが定石ですね。
>  最近の NFS は普通に lock がかかってしまうものが多いので忘
> れていました。これは相手先の条件もあるので、やってみないこと
> には lock 不能な file system かどうかは判断不能ですね。

 $HOME 以下でロックが効かないと動かないツールもいろいろあるので、
早くNFSサーバをリプレースないしアップグレードしたいと思っています。

> > 1. 別にロックファイルを作る
> > 2. open(2) の O_EXLOCK でアトミックにロックする
> > 3. 追記モード(a, a+, r+)でオープンして truncate させない
> 
>  O_EXLOCK は BSD 固有の option なので余り適切ではなさそうで
> す。
>  また、2. と 3. とは lock 不能だった場合にコマンド履歴が保
> 存されないので、使い勝手としては truncate されてしまうのと大
> 差ないと思います。

 過去の履歴が消えてしまったのはちょっと痛かったです。ログ機能が
付いているようなので、活用しようかな。

>  そういうことであれば、fcntl lock で実装しておいて返り値は
> 無視するという実装でどうでしょうかね。
> 
>  blocking lock にしてるので、返り値を無視したところで lock
> が有効な環境では普通に lock がかかる筈です。lock が無効な環
> 境でのみ、file の同時書込みに対応出来ないということで。
>  link lock の実装は、作成した lock file の後始末が面倒なん
> ですよね。割込まれた時とか異常終了した時とか考えると、そこま
> で苦労して実装することもないかと。

 そうですね。シェルは外から殺されることも多いですし。

 凝り出すと切りがないので、この対策で十分と思います。

-- 
                     /
                    /__  __            Akinori.org / MUSHA.org
                   / )  )  ) )  /     FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ /  ( (__(  @ iDaemons.org / and.or.jp

"Different eyes see different things,
    Different hearts beat on different strings --
       But there are times for you and me when all such things agree"