From katsu@sranhk.sra.co.jp Sun Mar 11 19:31:37 2001 Path: news2.sra.co.jp!not-for-mail From: WATANABE Katsuhiro Newsgroups: fj.unix Subject: Re: =?ISO-2022-JP?B?GyRCJEokPBsoQlVOSVggICAbJEIkTiVVJSElJCVrGyhC?= =?ISO-2022-JP?B?GyRCJTclOSVGJWAkRyRPJUclVSVpJTAkLEksTVcbKEIgGyRCTDUbKEI=?= =?ISO-2022-JP?B?GyRCJCQkTiRHJDckZyQmJCshIxsoQg==?= Date: 11 Mar 2001 19:30:29 +0900 Organization: Software Research Associates, Inc., Japan Lines: 94 Message-ID: References: <95tmul$sgb$1@lyra.kyoto.jepro.co.jp> NNTP-Posting-Host: sranhk.sra.co.jp Mime-Version: 1.0 (generated by tm-edit 7.106) Content-Type: text/plain; charset=ISO-2022-JP X-Trace: sranhh.sra.co.jp 984306640 45126 133.137.36.134 (11 Mar 2001 10:30:40 GMT) X-Complaints-To: news@sra.co.jp NNTP-Posting-Date: 11 Mar 2001 10:30:40 GMT X-Newsreader: Gnus v5.3/Emacs 19.34 Xref: news2.sra.co.jp fj.unix:8688 あまりの following up の遅さが議論の妨げになっていたらごめんなさい。 記事 <95tmul$sgb$1@lyra.kyoto.jepro.co.jp> で taca@kyoto.jepro.co.jp (Takahiro Kambe) さんいはく > In article > Michitoshi Sato writes: > > ないでしょうか。ffsではディレクトリーエントリーは書いたり消したり > > していくと増えても減ることは無いという実装になっていると聞いた事が > > あります。 > 4.2BSDまでです。4.3BSD以降はtruncate(2)の実装と関連して、減る様になっ > ています。途中に未使用な部分がある状態を詰めるといったことまではしま > せんが。 上の議論は、ディレクトリー「エントリ」数の話をしてるのでしょうか? それともディレクトリファイルの「サイズ」の話をしてるのでしょうか? 引き続くKambeさんの記述は後者に見えるので、そちらについて書きます。 ディレクトリファイルのサイズは、4.3BSD でも減ることはありません。 もっと後の BSD や、SunOS 4.? では減ることがあるでしょう。 fj では過去に以下のような議論がありましたのでご参照ください。 http://www.sra.co.jp/people/katsu/article/250.txt (付属図 http://www.sra.co.jp/people/katsu/article/dirwaste.gif) http://www.sra.co.jp/people/katsu/article/259.txt > 1. ディレクトリを作って、そこに"1"から"100"くらいのファイルを作る。 > 2. "2"から"99"までを消す。 → 変わらない。 > 3. もう一度"2"を作る。 → 変わらない。 > 3. "99"を消す。 → 変わらない。 > 4. "3"を作る。 → 減る。 > > といった挙動になるでしょう。 まず、この挙動の確認方法 step 3?4? は誤りでしょう。正しくは例えば 1. ディレクトリを作って、そこに"1"から"100"のファイルを昇順に作る。 2. "2"から"99"までを消す。 → 変わらない。 3. もう一度"2"を作る。 → 変わらない。 4. "100"を消す。 → 変わらない。 5. "3"を作る。 → 減る。 とおっしゃりたかったのだと考えます。しかし、4.3BSD の類では こうはならないことを、NEWS-OS 4.2.1R を例に示します。 sran265% sh $ strings /vmunix | egrep NEWS-OS @(#)NEWS-OS Release 4.2.1R #6: Thu Jan 25 21:32:32 JST 1996 (tomohiro@sr an265:/usr/src/sys/SRAN265) NEWS-OS Release 4.2.1R #6: Thu Jan 25 21:32:32 JST 1996 $ mkdir tmp $ cd tmp $ ls -ld drwxr-xr-x 2 katsu 512 Mar 10 00:42 . $ filename=1 $ while [ $filename -le 100 ] > do > touch $filename > filename=`expr $filename + 1` > done $ ls 1 2 30 41 52 63 74 85 96 10 20 31 42 53 64 75 86 97 100 21 32 43 54 65 76 87 98 11 22 33 44 55 66 77 88 99 12 23 34 45 56 67 78 89 13 24 35 46 57 68 79 9 14 25 36 47 58 69 8 90 15 26 37 48 59 7 80 91 16 27 38 49 6 70 81 92 17 28 39 5 60 71 82 93 18 29 4 50 61 72 83 94 19 3 40 51 62 73 84 95 $ ls -ld drwxr-xr-x 2 katsu 1536 Mar 10 00:43 . $ rm [2-9] [1-9]? $ ls 1 100 $ ls -ld drwxr-xr-x 2 katsu 1536 Mar 10 00:43 . $ touch 2 $ ls -ld drwxr-xr-x 2 katsu 1536 Mar 10 00:44 . $ rm 100 $ ls -ld drwxr-xr-x 2 katsu 1536 Mar 10 00:44 . $ touch 3 $ ls -ld drwxr-xr-x 2 katsu 1536 Mar 10 00:44 . 最近のいくつかの UNIX with FFS、例えば SunOS や FreeBSD ならば、 最後にサイズが 512 に減ることでしょう。どのバージョンから 減るようになったのか同定できる方はいらっしゃいますか? Linux などの BSD 由来でない OS で mount した FFS(ufs) は どういう振舞いなんでしょうか? -- 渡邊克宏@SRA オープンソースビジネス部