древний баг fsck_ffs
2011-08-31 23:59Недавно во время экспериментов одна из файловых систем FreeBSD на домашнем десктопе у меня повредилась так, что в одном из подкаталогов появился файл с именем нулевой длины, что недопустимо для UFS2: системные вызовы ядра не обрабатывают такие файлы. Оказалось, что fsck_ffs не проверяет эту проблему и поэтому рапортует, что файловая система чиста. Удалить каталог с таким файлом невозможно и т.д.
Пришлось запатчить fsck_ffs, добавив нужную проверку:
http://www.freebsd.org/cgi/query-pr.cgi?pr=160339
Баг сидит в коде FreeBSD с первоначального импорта исходников BSD 4.4 Lite более 17 лет назад. В коде NetBSD и OpenBSD этой проверки тоже нет.
Update: в девятой ветке исправлено 2 сентября и релиз 9.0 будет уже с исправлением. В 7.4-STABLE и в 8.2-STABLE исправлено 16 сентября.