2008年8月12日

[samba-jp:20329] Re:ファイル生成時刻の扱いについて

 しらいです。

 んー、先の mail はさとうさんに対するツッコミのつもりだった
んですが、そうは読めなかったでしょうか。誤解を招いてしまって
すみません。

In Message-Id <20080812213938.b6fdee59.touchan@xxxxx>
KAWASUMI Junji <touchan@xxxxx>さんwrites:

> 川澄です。

> >  でも、「未対応」を示す数値は birthtime 実装環境では現れ得
> > ない数値でないと、区別がつかなくなるんじゃないかと思うんです
> > がどうでしょう?
> そうですね、単純に 0より大きかったら採用という風に思っていまし
> たが、浅かったです。

 UTC を返してる st_birthtime の方はそれでも構わないと思いま
す。完璧じゃないにしろ、実用上特に問題ないでしょう。epoch に
遡って file を作成するニーズなんてまずありませんし。


> でもソースで確かめたわけでは無いですが、FreeBSD上で UFS1で作っ
> たファイルに対してbirthtimeがどうなるか実行してみたところ、
> エポック時間 1970/1/1 09:00:00 が返却されてきました。
> なので、何となく 0でいいんじゃないかと思いました。

 なら st_birthtime だけを見ればいいんじゃないでしょうか。対
応環境でも 0 という値を取り得る st_birthtimensec は、対応可
否の判断基準に用いるべきではないと思います。

 さとうさんの patch その 2 の方を見ると、nsec 値が 0 になっ
てしまうと st_birthtime の方が有効な値であっても「非対応」と
見なしてその値は使わないんですよね。
 問題はこの可能性がどのくらいあるかですけど、epoch に遡って
file 作成という詐称無しにはあり得ない頻度と比べて 10^(-9) と
いう頻度は十分に大きいと思います。
 毎秒 file 生成を続けて 30 年に 1 回ですか。PC が 30 台あれ
ば年 1 回の割合です。RTC の分解能を考えるともっと大きな確率
で nsec 値が 0 になり得るでしょう。

# 逆に RTC の特性で nsec 値は決して 0 にならないという保証
#があればまだいいんですけど、それでも将来 RTC が高性能にな
#ってしまうとそんな保証は無くなると思います。


> > > st_birthtimensec もあるかどうか調べて、両方 0 か両方 -1 なら
> > > 無視するのがいいのかなぁ。
> >
> >  10^(-9) の確率で nano second 値って 0 になるんじゃないかと
> > 思うんですが、UFS2 や FFS2 の実装のどこかにそれを回避する仕
> > 組みって用意されています?
> 個人的には、st_birthtimensecまで必要と思いませんが如何でしょう
> か。

 さとうさんが言ってるのは、nsec 値を有効数値として使うとい
う意味ではなくて、nsec 値が無効な値を示していた際には、仮に
st_birthtime が有効範囲にあっても無視するという意味です。
 nsec 値そのものは不要であるという点に関しては誰も異論ない
と思いますよ。

しらい たかし


投稿者 xml-rpc : 2008年8月12日 23:54
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/76199
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。