помимо каталогов юзеров расшаривался там с DVD-ROM диск системы Гарант.
юзали его достаточно редко, так что трудностей не возникало.
в недобрый час решил обновить самбу с 3.0.24 до 3.0.25а (portupgrade)
после обновления перестали открываться все папки,
в которые подмонтированы iso-образы и диск Гаранта с привода.
Без разницы, хоть smbclient-ом c сервера, хоть проводником виндовс (с другой машины)
при попытке открыть такие шары самба вываливать стала нечто подобное
Код: Выделить всё
smbd[80432]: [2007/05/30 17:20:10, 0] lib/fault.c:fault_report(41)
smbd[80432]: ======================================================
smbd[80432]: [2007/05/30 17:20:10, 0] lib/fault.c:fault_report(42)
smbd[80432]: INTERNAL ERROR: Signal 6 in pid 80432 (3.0.25)
smbd[80432]: Please read the Trouble-Shooting section of the Samba3-HOWTO
smbd[80432]: [2007/05/30 17:20:10, 0] lib/fault.c:fault_report(44)
smbd[80432]:
smbd[80432]: From: http://www.samba.org/samba/docs/Samba3-HOWTO.pdf
smbd[80432]: [2007/05/30 17:20:10, 0] lib/fault.c:fault_report(45)
smbd[80432]: =======================================================
smbd[80432]: [2007/05/30 17:20:10, 0] lib/util.c:smb_panic(1632)
smbd[80432]: PANIC (pid 80432): internal error
smbd[80432]: [2007/05/30 17:20:10, 0] lib/util.c:log_stack_trace(1786)
smbd[80432]: unable to produce a stack trace on this platform
kernel: pid 80432 (smbd), uid 0: exited on signal 6
smbd[80432]: [2007/05/30 17:20:10, 0] lib/fault.c:dump_core(181)
smbd[80432]: dumping core in /var/log/samba/cores/smbd
активное изучение вопроса с привлечением Jeremy Allison
позволило установить, что начиная с 3.0.25 в код внесены существенные изменения
"благодаря" которым и стало невозможно расшарить самбой смонтированные образы.
Воспользовавшись его предложением удалить подозрительный фрагмент кода,
закоментировал в
lib/replace/repdir_getdents.c
и
lib/replace/repdir_getdirentries.c
было
Код: Выделить всё
{
struct dir_buf *d = (struct dir_buf *)dir;
if (d->ofs >= d->nbytes) {
d->seekpos = lseek(d->fd, 0, SEEK_CUR);
d->ofs = 0;
d->nbytes = 0;
}
/* this relies on seekpos always being a multiple of
DIR_BUF_SIZE. Is that always true on BSD systems? */
if (d->seekpos & (DIR_BUF_SIZE-1)) {
abort();
}
return d->seekpos + d->ofs;
}
Код: Выделить всё
{
struct dir_buf *d = (struct dir_buf *)dir;
if (d->ofs >= d->nbytes) {
d->seekpos = lseek(d->fd, 0, SEEK_CUR);
d->ofs = 0;
d->nbytes = 0;
}
/* this relies on seekpos always being a multiple of
DIR_BUF_SIZE. Is that always true on BSD systems? */
/* if (d->seekpos & (DIR_BUF_SIZE-1)) {
abort();
} */
return d->seekpos + d->ofs;
}
образы стали расшариватья нормально.
пользовался материалами.
извещение о баге на freebsd
одно извещение о баге на багзиле самбы
второе извещение там же
ну и
попутные материалы на опеннете
кто нибуть еще сталкивался с подобным вопросом и насколько корректно для дальнейшей работы просто удалить подозрительный код ?
и насколько серьезно можно воспринимать утверждение что
ведь уже вышла и 3.0.25b , а до нее еще несколько исправлений самбы в портах, но проблема расшаривания образов штатно не решается и теперь уже переходит в новые версии самбы. (3.0.25b тоже не расшаривает образы, все симптомы и ошибки те же)*BSD is still broken for large directories.
