Собственно, ответ на
вчерашнюю задачку :) Это вовсе не баг, а, как правильно догадался
13_49, особая технология в некоторых файловых системах (в моем случае это была zfs) -- sparse files:
http://blogs.sun.com/bonwick/entry/seek_hole_and_seek_data Повторяется предельно просто, например, так:
ssize_t r = pwrite(fd, buf, nbytes, 9223342545346440969ULL);
Данные будут записаны по смещению 9223342545346440969, но сам файл при это девять миллионов терабайт не займет. В промежутке 0 -- 9223342545346440969 образуется дыра (hole), которая места не отожрет.
Штуковина забавная, но как ей воспользоваться я пока не придумал :) Разве что сделать такую хеш-таблицу в файле, где ключом будет являться напрямую смещение. Тем самым можно избежать пересборки хеша при его росте :)