Mercurial > hg > nginx-mail
diff src/os/unix/ngx_linux_aio_read.c @ 665:0b460e61bdcd default tip
Merge with nginx 1.0.0.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 25 Apr 2011 04:22:17 +0400 |
parents | c5122335e41d |
children |
line wrap: on
line diff
--- 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); } @@ -96,6 +95,10 @@ ngx_file_aio_read(ngx_file_t *file, u_ch n = io_submit(ngx_aio_ctx, 1, piocb); if (n == 1) { + ev->active = 1; + ev->ready = 0; + ev->complete = 0; + return NGX_AGAIN; } @@ -109,7 +112,7 @@ ngx_file_aio_read(ngx_file_t *file, u_ch "io_submit(\"%V\") failed", &file->name); if (n == NGX_ENOSYS) { - enosys = 1; + ngx_file_aio = 0; return ngx_read_file(file, buf, size, offset); }