Как я могу увеличить MAX_PATH_LENGTH в системе freeBSD?

Я пишу утилиту типа «find» для поиска некоторых конкретных файлов в системе на основе freebsd. Вызов stat () в FreeBSD 9 может принимать пути длиной 1024 символа, хотя Linux поддерживает до 4K символьных путей.

Сама система имеет файловую систему, отличную от FreeBSD (это коммерческая ОС), и эта файловая система имеет очень высокий предел MAX_PATH_LENGTH.

Если какой-либо пользователь смонтировал том в linux и создал иерархию каталогов с длиной пути больше 1 КБ, тогда, хотя файловая система будет поддерживать это, вызовы lstat / stat в freeBSD завершатся ошибкой.

Есть ли способ обойти эту проблему, или я могу как-то увеличить этот лимит?


person Professor_Chaos    schedule 09.02.2015    source источник


Ответы (1)


Вы можете сделать это, увеличив значение для PATH_MAX в /usr/src/sys/sys/syslimits.h и выполнить полную перестройку всей системы (ядра, библиотек и любого установленного программного обеспечения, использующего PATH_MAX, MAXPATHLEN или МАКСИНТЕРП). Просто не забудьте сохранить это под 64к.

Если вы все же пойдете по этому пути, избегайте использования бинарных пакетов (например, через pkg, portmaster или portupgrade). Придерживайтесь компиляции и установки из / usr / ports, и все будет в порядке.

person Allen Luce    schedule 15.02.2015