ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: sendfile() failed (38: Function not implemented)



On Sun, 18 Dec 2005, Alex Kitschkiruk wrote:

а что можно сделать? а как же rtsig метод?
ядро я не могу поменять. это значит, что я остаюсь без Sendfile?
я так понимаю что с ним намного эффективней работается...
а у меня nginx собирается как раз для раздачи огромных файлов.... :(
Неужели отключать sendfile при компиляции? К чему это может привести?

Прилагаемый патч решает эту проблему.

> На машине установлены include'ы для Линукса 2.6, а ядро 2.4.20.
> Поэтому configure нашёл epoll, которого нет в ядре, и sendfile64(),
> который появился только в 2.4.22.


Игорь Сысоев
http://sysoev.ru
--- auto/os/linux       Mon Nov 28 13:29:22 2005
+++ auto/os/linux       Sun Dec 18 11:18:34 2005
@@ -38,7 +38,7 @@
 
 ngx_feature="epoll"
 ngx_feature_name="NGX_HAVE_EPOLL"
-ngx_feature_run=no
+ngx_feature_run=yes
 ngx_feature_incs="#include <sys/epoll.h>"
 ngx_feature_libs=
 ngx_feature_test="int efd = 0, fd = 1, n;
@@ -62,12 +62,14 @@
 CC_AUX_FLAGS="-D_GNU_SOURCE"
 ngx_feature="sendfile()"
 ngx_feature_name="NGX_HAVE_SENDFILE"
-ngx_feature_run=no
-ngx_feature_incs="#include <sys/sendfile.h>"
+ngx_feature_run=yes
+ngx_feature_incs="#include <sys/sendfile.h>
+#include <errno.h>"
 ngx_feature_libs=
 ngx_feature_test="int s = 0, fd = 1;
                   ssize_t n; off_t off = 0;
-                  n = sendfile(s, fd, &off, 1)"
+                  n = sendfile(s, fd, &off, 1);
+                  if (n == -1 && errno == ENOSYS) return 1"
 . auto/feature
 
 if [ $ngx_found = yes ]; then
@@ -80,12 +82,14 @@
 CC_AUX_FLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64"
 ngx_feature="sendfile64()"
 ngx_feature_name="NGX_HAVE_SENDFILE64"
-ngx_feature_run=no
-ngx_feature_incs="#include <sys/sendfile.h>"
+ngx_feature_run=yes
+ngx_feature_incs="#include <sys/sendfile.h>
+#include <errno.h>"
 ngx_feature_libs=
 ngx_feature_test="int s = 0, fd = 1;
                   ssize_t n; off_t off = 0;
-                  n = sendfile(s, fd, &off, 1)"
+                  n = sendfile(s, fd, &off, 1);
+                  if (n == -1 && errno == ENOSYS) return 1"
 . auto/feature
 
 


 




Copyright © Lexa Software, 1996-2009.