История изменений
Исправление firkax, (текущая версия) :
Там и есть подобие лога транзакций, bitmap называется. Замедляет все записи на +1 seek time. Работает так: на каждый блок по биту-флагу, в бите указано, была ли в этот блок запись в последние сколько-то там времени (или там количество записей считается, не знаю). Если с момента вылета диска прошло меньше чем длина этого цикла - то все блоки, которые могут отличаться, помечены единицами.
Если прошло больше времени, или если если bitmap-а нет и на диск после вылета была хоть одна запись - то re-add откажется делаться вроде.
В bitmap-е могут быть (и почти точно будут) лишние единицы (в т.ч. кажется из-за ненадёжного алгоритма их сбрасывания, не представляю как можно это точно делать в учётом ребутов), но ошибочных нулей там по идее быть не должно. А единиц даже в сумме с лишними всё равно сильно меньше чем весь объём диска.
Исходная версия firkax, :
Там и есть подобие лога транзакций, bitmap называется. Замедляет все записи на +1 seek time. Работает так: на каждый блок по биту-флагу, в бите указано, была ли в этот блок запись в последние сколько-то там времени (или там количество записей считается, не знаю). Если с момента вылета диска прошло меньше чем длина этого цикла - то все блоки, которые могут отличаться, помечены единицами.
Если прошло больше времени, или если если bitmap-а нет и на диск после вылета была хоть одна запись - то re-add откажется делаться вроде.