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

SATOH Fumiyasu fumiyas @ osstech.jp
2008年 8月 29日 (金) 11:34:00 JST


さとうふみやす @ OSS テクノロジです。
# そういえば、これは sugj-tech 向けな話題のような気がする…。
# http://cgi.samba.gr.jp/mailman/listinfo/sugj-tech
# たまには思い出して使ってやってください。

Samba Git リポジトリの Samba 3.2 とそれ以降のヘッドブランチに
st_birthtime* への対応コードが入り始めました。

  http://gitweb.samba.org/?p=samba.git;a=commit;h=0cba30073410ba499834ac26dee3f81a75c8de4f

怪しい英語で軽く突っ込んでおきました

  http://lists.samba.org/archive/samba-technical/2008-August/061041.html

At Wed, 13 Aug 2008 19:26:35 +0900,
Takashi SHIRAI wrote:
> >   * birthtime と birthtimensec が両方とも 0 
> >   * birthtime が (time_t)-1
> >   * birthtimensec が -1L
> 
>  そもそも st_birthtimensec は見る必要あるのかなぁと思ってる
> んですがどうでしょう?nsec 値が条件を左右するのは下記のケー
> スになりますよね。

ファイルシステムが birthtime 未対応の場合を表わすのに、
bithtimensec を -1L にするのが一番妥当だと考えたからです。
それと、birthtime をサポートする先進的(?)な OS であれば、
当然 birthtimensec もサポートするだろう、という勝手な妄想です。:-)

ほかの条件も列挙したのは、先のメールで紹介した
http://www.nabble.com/birthtime-initialization-td18584558.html
にあるように、この辺りの仕様が確定していないようなので、
あれだけの条件を挙げないと実際のシステムで使えないかなと
思ったからです。

今考えると st_birthtime が 0 か -1 の場合に無視するだけで
概ね大丈夫だろうしコードがシンプルなのでいいかと思ってます。

何はともあれ、それほど深く考えていないので、突っ込みどころ
満載なのはご容赦を。(いいわけ)

> 1.st_birthtimensec = -1 かつ st_birthtime != -1 の場合
> 2.st_birthtime = 0 かつ st_birthtimensec != 0 の場合
>  これ以外のケースでは st_birthtime のみを判断基準にすれば十
> 分ですから。
> 
>  1. のケースは余り考えにくいのですが、もしあり得るとしたら
> この st_birthtime は何を指しているんでしょうか?無視してしま
> って本当に構わない?
>  例えば分解能の問題で 1sec 未満の値が取得出来ない環境では、
> nsec 値のみ無視して欲しいという意味で st_birthtimensec のみ
> -1 にしてしまうという状況は無いんでしょうかね。

そういう場合は st_birtimenesec は 0 にするだろうと
思い込んでいましたが、-1 を設定する(ことで nsec 未対応を
明示するんですよね?) という仕様も考えられなくはないですねぇ。
私はその仕様は嫌だけど。

>  2. のケースは epoch に極めて近い time stamp で、このレアケ
> ースを救済するのが目的だと思いますが、現実的にはそこまで拘る
> 必要もないかと感じます。
>  そもそもこの辺りの time stamp 値は UNIX 的には valid でも
> Windows 的には invalid (MS-DOS epoch: 1980/1/1) なので、救済
> しても仕方ないんじゃないでしょうかね?

それは知らなかったです。確かに意味がないかも。

> > >  nsec 値そのものは不要であるという点に関しては誰も異論ない
> > > と思いますよ。
> > 
> > Windows (SMB?) のファイルの時刻精度は 100ns みたいですから、
> > 不要ってことはないですね。
> 
>  んー、でも件の patch を当てた箇所の関数は time_t を返すの
> で、nsec 値を使おうとしたらもっと抜本的な改造が必要になりま
> すよ。

もちろん、ほかの修正が必要なことはわかってますよ。:-)

-- 
-- Name: SATOH Fumiyasu (fumiyas @ osstech co jp)
-- Business Home: http://www.OSSTech.co.jp/
-- Personal Home: http://www.SFO.jp/blog/



samba-jp メーリングリストの案内