Shuffling does not ensue as you say. The filesystem (most modern ones at least) are perfectly capable of dealing with non-contiguous files. Dynamic filesystems such as Reiser, VxFS (probably the free version too), and I do believe ext3 are perfectly capable of defragmenting themselves as files grow. You are also perfectly allowed to adjust the block size of your filesystem if you are very paranoid about running out of inodes due to many small files. Misty
I may be behind the times as regards Linux / Unix file systems, but I am under the impression that mass storage is allocated with granularities not less than a sector size and almost always a multiple thereof.
Under such allocation schemes and a typical allocation unit size of 4096 (eight 512-byte sectors), a message whose entire contents (body, headers and mail client overhead / added headers) were, say, 2000 bytes, then 2096 bytes would be wasted if this message occupied a file of its own.
Why? it would require at most blocksize-1 bytes be moved some place else and then the file can grow as under any other file system, and that is assuming that the tail of another file has had time to move in there. Have a look at the whitepapers at www.namesys.com for the technical specifics (or the reiserfs source, if you are that way inclined :)