Кросспост из
блога автора. Комментировать лучше
там, но можно и тут
Если вы хотите поеба потрахаться по-настоящему, предлагаю такой вот метод:
- Создаете ZFS-том терабайт эдак на шесть (меньше не пробовал) на FreeBSD 8.1-RELEASE/STABLE.
- И записываете туда пару-тройку сотен тысяч файлов с русскими (и европейскими) именами в кодировке UTF-8.
Если вам очень повезет, то вы получите ненулевое количество каталогов в которых нельзя сделать ls или find (и естественно, все остальные, получающие список файлов, вроде du). Если повезет слегка, то ls работать будет, а вот rm * - нет. И rm конкретный-файл - тоже нет.
Единственная выявленная система - это очень длинные, под лимит, имена файлов. Не только русские, но и европейские (с умляутами).
Мне повезло дважды, обоими способами. Воспроизводится на ура: ls /archive/kuda/nado - и сразу kernel panic. В первом случае (не работает ls) - со стек-трейсом (уходящим из directory lookup в недра ZFS), во втором (не работает rm) - просто Fault 12. За один раз, это нифига не вероятностный процесс. И на 8.1-Release и на свежей -STABLE
Если вы хотите усугубить свое счастье, то можете сделать zfs destroy нужный раздел, оно в этом месте тоже упадет, но уже с концами, смонтировать такой том или сделать zpool import - тоже не получится.
Короче, починить это нельзя (clri на zfs нет), можно только замести под ковер: все файлы, кроме неудаляемых, из zfs-раздела убрать, а сам раздел перестать монтировать.
Бился об эти грабли два дня (а том у меня один на все, кажный раз перестановка, точнее подъем с бэкапа). Научился устойчиво воспроизводить. Тьфу.
Конструктив: у меня UTF-8-имена берутся от Самбы. Достаточно переделать их в cp1251 (настройками самбы: unix charset = windows-1251), как сразу все проходит. При этом европейские умляуты Самба как-то разумно перекодирует (умляуты понижает), а больше мне ничего и не надо.
Так как на этой машине нет не просто кернельного отладчика, но и компорта - не понимаю, как послать внятный PR (да и компорт мне сувать особо некуда....)
Руки тянутся к опенсолярису (в надежде получить ZFS получше), ибо слезать с ZFS совсем не хочется, при всех этих болезнях - она хотя бы не разваливается при падениях (ну если не в момент zfs destroy развалилась), не требует нарезки диска на куски, не нуждается в многочасовых fsck, не перестраивает целиком raid после ресета, и так далее.... Хотя, может быть, аппаратный RAID и UFS+gjournal в сумме создали бы меньше веселых минут.
P.S. Заодно вскрылась причина еженедельных ночных падений: /etc/periodic/weekly/310.locate