diff options
author | Igor Sysoev <igor@sysoev.ru> | 2009-11-05 13:12:30 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2009-11-05 13:12:30 +0000 |
commit | 4121aa34403665f662bbd9d8ef21176f36a8108c (patch) | |
tree | 3b99cf2c726a585383419910d4c3b8ba03d84a67 /src/os/unix | |
parent | 9b67ca0e410a17fbdef14de5e358782f0195ab96 (diff) | |
download | nginx-4121aa34403665f662bbd9d8ef21176f36a8108c.tar.gz nginx-4121aa34403665f662bbd9d8ef21176f36a8108c.zip |
export aio presence knowledge to prevent using "aio sendfile",
if aio does not present
Diffstat (limited to 'src/os/unix')
-rw-r--r-- | src/os/unix/ngx_file_aio_read.c | 11 | ||||
-rw-r--r-- | src/os/unix/ngx_files.c | 7 | ||||
-rw-r--r-- | src/os/unix/ngx_files.h | 2 | ||||
-rw-r--r-- | src/os/unix/ngx_linux_aio_read.c | 13 |
4 files changed, 20 insertions, 13 deletions
diff --git a/src/os/unix/ngx_file_aio_read.c b/src/os/unix/ngx_file_aio_read.c index 19a75890c..ef7a46107 100644 --- a/src/os/unix/ngx_file_aio_read.c +++ b/src/os/unix/ngx_file_aio_read.c @@ -39,12 +39,11 @@ ssize_t ngx_file_aio_read(ngx_file_t *file, u_char *buf, size_t size, off_t offset, ngx_pool_t *pool) { - int n; - ngx_event_t *ev; - ngx_event_aio_t *aio; - static ngx_uint_t enosys = 0; + int n; + ngx_event_t *ev; + ngx_event_aio_t *aio; - if (enosys) { + if (!ngx_file_aio) { return ngx_read_file(file, buf, size, offset); } @@ -116,7 +115,7 @@ ngx_file_aio_read(ngx_file_t *file, u_char *buf, size_t size, off_t offset, "aio_read(\"%V\") failed", &file->name); if (n == NGX_ENOSYS) { - enosys = 1; + ngx_file_aio = 0; return ngx_read_file(file, buf, size, offset); } diff --git a/src/os/unix/ngx_files.c b/src/os/unix/ngx_files.c index 618d4e214..2264cc13e 100644 --- a/src/os/unix/ngx_files.c +++ b/src/os/unix/ngx_files.c @@ -8,6 +8,13 @@ #include <ngx_core.h> +#if (NGX_HAVE_FILE_AIO) + +ngx_uint_t ngx_file_aio = 1; + +#endif + + ssize_t ngx_read_file(ngx_file_t *file, u_char *buf, size_t size, off_t offset) { diff --git a/src/os/unix/ngx_files.h b/src/os/unix/ngx_files.h index 966262143..2efd24778 100644 --- a/src/os/unix/ngx_files.h +++ b/src/os/unix/ngx_files.h @@ -313,6 +313,8 @@ size_t ngx_fs_bsize(u_char *name); ssize_t ngx_file_aio_read(ngx_file_t *file, u_char *buf, size_t size, off_t offset, ngx_pool_t *pool); +extern ngx_uint_t ngx_file_aio; + #endif diff --git a/src/os/unix/ngx_linux_aio_read.c b/src/os/unix/ngx_linux_aio_read.c index 3b4185c8b..834a11d07 100644 --- a/src/os/unix/ngx_linux_aio_read.c +++ b/src/os/unix/ngx_linux_aio_read.c @@ -27,13 +27,12 @@ ssize_t ngx_file_aio_read(ngx_file_t *file, u_char *buf, size_t size, off_t offset, ngx_pool_t *pool) { - long n; - struct iocb *piocb[1]; - ngx_event_t *ev; - ngx_event_aio_t *aio; - static ngx_uint_t enosys = 0; + long n; + struct iocb *piocb[1]; + ngx_event_t *ev; + ngx_event_aio_t *aio; - if (enosys) { + if (!ngx_file_aio) { return ngx_read_file(file, buf, size, offset); } @@ -109,7 +108,7 @@ ngx_file_aio_read(ngx_file_t *file, u_char *buf, size_t size, off_t offset, "io_submit(\"%V\") failed", &file->name); if (n == NGX_ENOSYS) { - enosys = 1; + ngx_file_aio = 0; return ngx_read_file(file, buf, size, offset); } |