Несмотря на "explicitly enable largefile support" в %changelog, mldonkey-server-2.7.6-alt1 завершается с ошибкой "File size limit exceeded" сразу после добавления, к примеру, ed2k://|file|Cubase.SX.v3.1.1.944-H2O.with.ED.SX3.Video.Tutorials-DELiRiUM.DVDr.UNOX.iso|3627241472|880EF74CB6975D4A41892F4E8A6D621A|/ К сожалению, ocaml - слишком путаный для меня язык, особенно с части "клея" между ocaml и c. Возможно, проблема не столько в mldonkey, сколько в неправильной сборке ocaml? Других идей у меня нет...
Как появится новый ocaml в сизифе, можно сделать повторный подход к снаряду :)
Без нового мантейнера он там не появится.
Добавил -D_FILE_OFFSET_BITS=64 в specfile OCaml, пакет можно собрать из моего репозитария на git.alt. Что касается mldonkey, есть вот такая дискуссия: http://mldonkey.sourceforge.net/forums/viewtopic.php?p=23518#23518 Я проверил, симптомы совпадают: [pid 16197] read(17, "dllink ed2k://|file|Cubase.SX.v3"..., 16384) = 143 [pid 16197] write(17, "\33[46;1H\33[2K\n\33[2K\33[46;1H", 23) = 23 [pid 16197] open("temp/urn_ed2k_880EF74CB6975D4A41892F4E8A6D621A", O_RDWR|O_CREAT, 0664) = 19 [pid 16197] fstat64(19, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 [pid 16197] _llseek(19, 3627241471, [3627241471], SEEK_SET) = 0 [pid 16197] write(19, "\0", 1) = -1 EFBIG (File too large) [pid 16197] --- SIGXFSZ (File size limit exceeded) @ 0 (0) --- Насколько я знаю, большие файлы следует открывать с помощью open64() или open(... | O_LARGEFILE ), здесь этого нет. После упомянутой пересборки OCaml требуемый флаг появляется: [pid 5042] read(17, "dllink ed2k://|file|Cubase.SX.v3"..., 16384) = 143 [pid 5042] write(17, "\33[46;1H\33[2K\n\33[2K\33[46;1H", 23) = 23 [pid 5042] open("temp/urn_ed2k_880EF74CB6975D4A41892F4E8A6D621A", O_RDWR|O_CREAT|O_LARGEFILE, 0664) = 19 [pid 5042] fstat64(19, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 [pid 5042] _llseek(19, 3627241471, [3627241471], SEEK_SET) = 0 [pid 5042] write(19, "\0", 1) = 1 Так что вариант рабочий. Смутило, что в configure от mldonkey предусмотрен ключ --enable-largefile (AC_SYS_LARGEFILE), однако никакого влияния он не оказывает: ... checking for special C compiler options needed for large files... no checking for _FILE_OFFSET_BITS value needed for large files... 64 checking for _LARGE_FILES value needed for large files... no ... Ещё почитаю на эту тему, может, просто не понял. Да, в mldonkey используется модуль LargeFile: http://caml.inria.fr/pub/docs/manual-ocaml/libref/UnixLabels.LargeFile.html , но он не содержит реализации open, так что и повлиять на способ открытия файла не может. Так что моё мнение: нужно пересобрать OCaml в Сизиф с -D_FILE_OFFSET_BITS=64. Прошу высказываться =).
(In reply to comment #3) > Добавил -D_FILE_OFFSET_BITS=64 в specfile OCaml, пакет можно собрать из моего > репозитария на git.alt. > > Что касается mldonkey, есть вот такая дискуссия: > http://mldonkey.sourceforge.net/forums/viewtopic.php?p=23518#23518 <skip /> > Так что вариант рабочий. Отлично! > Смутило, что в configure от mldonkey предусмотрен ключ --enable-largefile > (AC_SYS_LARGEFILE), однако никакого влияния он не оказывает: > ... > checking for special C compiler options needed for large files... no > checking for _FILE_OFFSET_BITS value needed for large files... 64 > checking for _LARGE_FILES value needed for large files... no > ... > Ещё почитаю на эту тему, может, просто не понял. AFAIR, сложность с Large File Support в glibc (вообще говоря, в GNU/Linux) как раз и состоит в том, что все участвующие стороны (библиотеки и программы) должны быть собраны с LFS, а иначе происходит "откат" на безопасный вариант. > Так что моё мнение: нужно пересобрать OCaml в Сизиф с -D_FILE_OFFSET_BITS=64. > > Прошу высказываться =). +1
че высказываться, собирать надо!
Кстати, после пересборки ocaml с модификациями bga@ и обновлением до 3.09.3, пересборки lablgtk2 и mldonkey с новым ocaml, все прекрасно заработало (в т.ч. и BT). Насчет ED2K и больших файлов все гораздо интереснее - текущая реализация протокола в mldonkey поддерживает файлы до 4Gb, есть патчи для поддержки до 256Gb, но они считаются нестабильными (см. http://mldonkey.sourceforge.net/EDK4GB).
Новая версия mldonkey, пересобранная с новым ocaml, отправлена в i/S (2.8.2-alt0.1).
Полностью скачать не пробовал, но, по крайней мере, ничего не падает мгновенно после добавления в очередь файла > 2 Gb. Спасибо!