comparison src/os/unix/ngx_linux_aio_read.c @ 3294:04cfc09b8b8d

export aio presence knowledge to prevent using "aio sendfile", if aio does not present
author Igor Sysoev <igor@sysoev.ru>
date Thu, 05 Nov 2009 13:12:30 +0000
parents 6060225e9261
children cd04f652478c
comparison
equal deleted inserted replaced
3293:8abb88374c6c 3294:04cfc09b8b8d
25 25
26 ssize_t 26 ssize_t
27 ngx_file_aio_read(ngx_file_t *file, u_char *buf, size_t size, off_t offset, 27 ngx_file_aio_read(ngx_file_t *file, u_char *buf, size_t size, off_t offset,
28 ngx_pool_t *pool) 28 ngx_pool_t *pool)
29 { 29 {
30 long n; 30 long n;
31 struct iocb *piocb[1]; 31 struct iocb *piocb[1];
32 ngx_event_t *ev; 32 ngx_event_t *ev;
33 ngx_event_aio_t *aio; 33 ngx_event_aio_t *aio;
34 static ngx_uint_t enosys = 0;
35 34
36 if (enosys) { 35 if (!ngx_file_aio) {
37 return ngx_read_file(file, buf, size, offset); 36 return ngx_read_file(file, buf, size, offset);
38 } 37 }
39 38
40 aio = file->aio; 39 aio = file->aio;
41 40
107 106
108 ngx_log_error(NGX_LOG_CRIT, file->log, n, 107 ngx_log_error(NGX_LOG_CRIT, file->log, n,
109 "io_submit(\"%V\") failed", &file->name); 108 "io_submit(\"%V\") failed", &file->name);
110 109
111 if (n == NGX_ENOSYS) { 110 if (n == NGX_ENOSYS) {
112 enosys = 1; 111 ngx_file_aio = 0;
113 return ngx_read_file(file, buf, size, offset); 112 return ngx_read_file(file, buf, size, offset);
114 } 113 }
115 114
116 return NGX_ERROR; 115 return NGX_ERROR;
117 } 116 }