07/04/29 22:05:26 1GEfne4W0
巨大ファイルの件、わかったお。
まず、vanilla kernel 2.6.21 で、ファイルサイズを足し算している部分を探した。
linux-2.6.21/fs/isofs/inode.c の isofs_read_level3_size にある
inode->i_size += isonum_733(de->size);
という部分がハケーンされたお。
この size というのは、struct iso_directory_record に属してるお。
でさ、isofs_read_level3_size の level3 ってなんだろうと思ったら、
ISO9660 の level3 なんだってさ。ぐぐると、
> 一つのファイルを不連続な複数の領域に分散して書き込める「マルチエクステンド」
> 形式の使用が可能になっている。
って説明が出てきた。
で、変じゃね?と思ってた ISO を isodump に食わせて、当該ファイルをみると、
フラグが 0x80 ってなってて、Multi-Extent ビットが勃ってたお。
> Multi-Extent: If set to ONE, shall mean that this is not the final Directory Record for the file.
参考にしたのは、
- URLリンク(www.wikihouse.com)
- URLリンク(euc.jp)
- linux-2.6.21/Documentation/filesystems/isofs.txt に書いてあった Ecma-119.pdf
だお。
これで安心して使えるお。