Страница 1 из 1

samba 3.0.25 : memory-disk шары не работают

Добавлено: 2007-07-08 17:33:44
staskur
стояла на freebsd 6.2 samba-3.0.24 и в общем то есть не просила...
помимо каталогов юзеров расшаривался там с 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;
}
собрал самбу заново. samba-3.0.25a_1,1
образы стали расшариватья нормально.

пользовался материалами.

извещение о баге на freebsd

одно извещение о баге на багзиле самбы
второе извещение там же

ну и

попутные материалы на опеннете


кто нибуть еще сталкивался с подобным вопросом и насколько корректно для дальнейшей работы просто удалить подозрительный код ?

и насколько серьезно можно воспринимать утверждение что
*BSD is still broken for large directories.
ведь уже вышла и 3.0.25b , а до нее еще несколько исправлений самбы в портах, но проблема расшаривания образов штатно не решается и теперь уже переходит в новые версии самбы. (3.0.25b тоже не расшаривает образы, все симптомы и ошибки те же)

:?

Добавлено: 2007-07-08 18:04:32
Alex Keda
корректно-некорректно - главное что работает

Добавлено: 2007-07-08 20:21:30
vintovkin
ага!это ещё та песня!
что после обновления софтины,
она вообще оказывается работать!
ужаснах!!! :D :D :D :D