comparison src/os/unix/ngx_file_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 113cd532b328
children 37da005a5808
comparison
equal deleted inserted replaced
3293:8abb88374c6c 3294:04cfc09b8b8d
37 37
38 ssize_t 38 ssize_t
39 ngx_file_aio_read(ngx_file_t *file, u_char *buf, size_t size, off_t offset, 39 ngx_file_aio_read(ngx_file_t *file, u_char *buf, size_t size, off_t offset,
40 ngx_pool_t *pool) 40 ngx_pool_t *pool)
41 { 41 {
42 int n; 42 int n;
43 ngx_event_t *ev; 43 ngx_event_t *ev;
44 ngx_event_aio_t *aio; 44 ngx_event_aio_t *aio;
45 static ngx_uint_t enosys = 0; 45
46 46 if (!ngx_file_aio) {
47 if (enosys) {
48 return ngx_read_file(file, buf, size, offset); 47 return ngx_read_file(file, buf, size, offset);
49 } 48 }
50 49
51 aio = file->aio; 50 aio = file->aio;
52 51
114 113
115 ngx_log_error(NGX_LOG_CRIT, file->log, n, 114 ngx_log_error(NGX_LOG_CRIT, file->log, n,
116 "aio_read(\"%V\") failed", &file->name); 115 "aio_read(\"%V\") failed", &file->name);
117 116
118 if (n == NGX_ENOSYS) { 117 if (n == NGX_ENOSYS) {
119 enosys = 1; 118 ngx_file_aio = 0;
120 return ngx_read_file(file, buf, size, offset); 119 return ngx_read_file(file, buf, size, offset);
121 } 120 }
122 121
123 return NGX_ERROR; 122 return NGX_ERROR;
124 } 123 }