On Tue, Jul 13, 2004 at 11:50:32PM +0300, Paul Arakelyan wrote:
On Tue, Jul 13, 2004 at 12:24:46PM +0300, Alexandr D. Kanevskiy wrote:
On Mon, Jul 12, 2004 at 11:17:23PM +0300, Paul Arakelyan wrote:
Hi! А чего я нигде не встречал, что в http размер файла для нормальной работы с ним - 2GB? (ну, fseek() limitations - эт понятно, но в HTTP длина же в текстовом виде передаётся...). Или это бага апача? И что это за страшные лимиты в 2GB file size на ext3fs? Как люди с этим живут? (пример экстримов - лог дорастает до 2GB и сквид клеи ласты, а как в xDonkey "достать" файло на 3GB линуксоидам - ваще непонятно :) ).
Криво собранно приложение. В Linux и в glibc давным давно уже lseek 64bit'ный. На грабли я нарывался в логгинге в основном. Нафига работающему процессу вообще куда-то seek делать по логу? (Вопрос не в том, чтоб logs rotate). а кто говорит seek ? это вполне могут быть проблемы 32bit'ных функций fopen/fwrite/f*() в glibc. при включении LARGEFILE_SUPPORT это все автоматом уходит на f*64().
Хм - на разных линуксах на такое нарывался - apache from ensim, squid ( default - ./configure и "куда ставить"), vmware gsx 3.0. Это из того, на что я нарвался. "Тенденция, однако". Redhat7.x (httpd/ensim, squid), redhat 9.0 - vmware. squid ничего об этом не знает. полностью полагается на libc. Видать никто авторам squid'а об этом еще не писал :) решается одним define.
apache1 - там да, там грустно. apache2 - знает об largefile и ведет себя с ними корректно. (через apr библиотеку: .... adding "-D_XOPEN_SOURCE=500" to CPPFLAGS ....) wget-1.9.1 аналогично _XOPEN_SOURCE=500 имеет. т.е. потенциально более 2Gb файлы тоже должен понимать. xDonkey - на совести их писателей. Далее, судя по коду vsftpd на других операционках аналогичная картина: port/solaris_bogons.h: /* Safe to always enable 64-bit file support. */ #define _FILE_OFFSET_BITS 64 #define _LARGEFILE_SOURCE 1 #define _LARGEFILE64_SOURCE 1 sysutil.c: /* Activate 64-bit file support on Linux/32bit plus others */ #define _FILE_OFFSET_BITS 64 #define _LARGEFILE_SOURCE 1 #define _LARGEFILE64_SOURCE 1 .... sysdelutil.c: #if (defined(__FreeBSD__) && __FreeBSD__ >= 3) #define _FILE_OFFSET_BITS 64 #define _LARGEFILE_SOURCE 1 #define _LARGEFILE64_SOURCE 1 #endif Т.е. мелкое резюме - те кто пишет код нормально - они догадываются о многих вещах. Кто пишет под себя и только под свою длинну ручки грабель - тот пишет по другому. Угадывать что-же хотел пользователь libc не обязанна. -- With best regards, Alexandr Kanevskiy. ISP Inter-Don. CTO AK2240-RIPE, AK2-6BONE =================================================================== uanog mailing list. To Unsubscribe: send mail to majordomo@uanog.kiev.ua with "unsubscribe uanog" in the body of the message