annotate src/os/unix/ngx_linux_aio_read.c @ 9274:46ecad404a29 default tip

Mail: reset imap tag to empty after authentication attempt. We need to reset the imap tag to empty after an authentication attempt completes, otherwise if the next line parsed is incomplete with no tag (e.g. empty line) then we use the "tag" from the previous buffer which is now definitely wrong and has been partially overwritten with the most recently read data (e.g. CRLF). An example before this patch: S: * OK IMAP4 ready C: foobar login a b S: foobar NO Incorrect username or password. C: S: S: obar BAD invalid command Then with this patch: S: * OK IMAP4 ready C: foobar login a b S: foobar NO Incorrect username or password. C: S: * BAD invalid command
author Rob Mueller <robm@fastmailteam.com>
date Wed, 15 May 2024 10:06:00 +0300
parents f01ab2dbcfdc
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2 /*
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
3 * Copyright (C) Igor Sysoev
4412
d620f497c50f Copyright updated.
Maxim Konovalov <maxim@nginx.com>
parents: 4129
diff changeset
4 * Copyright (C) Nginx, Inc.
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
5 */
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
6
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
7
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8 #include <ngx_config.h>
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
9 #include <ngx_core.h>
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
10 #include <ngx_event.h>
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
12
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
13 extern int ngx_eventfd;
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
14 extern aio_context_t ngx_aio_ctx;
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
15
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
16
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
17 static void ngx_file_aio_event_handler(ngx_event_t *ev);
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
18
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
19
4129
6903dac6ad19 Fixing Linux AIO syscalls return value handling:
Igor Sysoev <igor@sysoev.ru>
parents: 4076
diff changeset
20 static int
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
21 io_submit(aio_context_t ctx, long n, struct iocb **paiocb)
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
22 {
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
23 return syscall(SYS_io_submit, ctx, n, paiocb);
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
24 }
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
25
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
26
5980
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
27 ngx_int_t
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
28 ngx_file_aio_init(ngx_file_t *file, ngx_pool_t *pool)
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
29 {
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
30 ngx_event_aio_t *aio;
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
31
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
32 aio = ngx_pcalloc(pool, sizeof(ngx_event_aio_t));
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
33 if (aio == NULL) {
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
34 return NGX_ERROR;
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
35 }
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
36
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
37 aio->file = file;
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
38 aio->fd = file->fd;
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
39 aio->event.data = aio;
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
40 aio->event.ready = 1;
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
41 aio->event.log = file->log;
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
42
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
43 file->aio = aio;
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
44
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
45 return NGX_OK;
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
46 }
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
47
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
48
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
49 ssize_t
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
50 ngx_file_aio_read(ngx_file_t *file, u_char *buf, size_t size, off_t offset,
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
51 ngx_pool_t *pool)
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
52 {
4129
6903dac6ad19 Fixing Linux AIO syscalls return value handling:
Igor Sysoev <igor@sysoev.ru>
parents: 4076
diff changeset
53 ngx_err_t err;
3294
04cfc09b8b8d export aio presence knowledge to prevent using "aio sendfile",
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
54 struct iocb *piocb[1];
04cfc09b8b8d export aio presence knowledge to prevent using "aio sendfile",
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
55 ngx_event_t *ev;
04cfc09b8b8d export aio presence knowledge to prevent using "aio sendfile",
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
56 ngx_event_aio_t *aio;
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
57
3294
04cfc09b8b8d export aio presence knowledge to prevent using "aio sendfile",
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
58 if (!ngx_file_aio) {
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
59 return ngx_read_file(file, buf, size, offset);
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
60 }
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
61
5980
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
62 if (file->aio == NULL && ngx_file_aio_init(file, pool) != NGX_OK) {
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
63 return NGX_ERROR;
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
64 }
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
65
5980
ccad84a174e0 Refactored sendfile() AIO preload.
Valentin Bartenev <vbart@nginx.com>
parents: 4412
diff changeset
66 aio = file->aio;
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
67 ev = &aio->event;
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
68
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
69 if (!ev->ready) {
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
70 ngx_log_error(NGX_LOG_ALERT, file->log, 0,
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
71 "second aio post for \"%V\"", &file->name);
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
72 return NGX_AGAIN;
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
73 }
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
74
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
75 ngx_log_debug4(NGX_LOG_DEBUG_CORE, file->log, 0,
6480
f01ab2dbcfdc Fixed logging.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5980
diff changeset
76 "aio complete:%d @%O:%uz %V",
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
77 ev->complete, offset, size, &file->name);
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
78
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
79 if (ev->complete) {
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
80 ev->active = 0;
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
81 ev->complete = 0;
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
82
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
83 if (aio->res >= 0) {
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
84 ngx_set_errno(0);
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
85 return aio->res;
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
86 }
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
87
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
88 ngx_set_errno(-aio->res);
4076
37da005a5808 Bugfix: open_file_cache lost is_directio flag.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3777
diff changeset
89
37da005a5808 Bugfix: open_file_cache lost is_directio flag.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3777
diff changeset
90 ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno,
37da005a5808 Bugfix: open_file_cache lost is_directio flag.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3777
diff changeset
91 "aio read \"%s\" failed", file->name.data);
37da005a5808 Bugfix: open_file_cache lost is_directio flag.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3777
diff changeset
92
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
93 return NGX_ERROR;
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
94 }
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
95
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
96 ngx_memzero(&aio->aiocb, sizeof(struct iocb));
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
97
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
98 aio->aiocb.aio_data = (uint64_t) (uintptr_t) ev;
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
99 aio->aiocb.aio_lio_opcode = IOCB_CMD_PREAD;
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
100 aio->aiocb.aio_fildes = file->fd;
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
101 aio->aiocb.aio_buf = (uint64_t) (uintptr_t) buf;
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
102 aio->aiocb.aio_nbytes = size;
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
103 aio->aiocb.aio_offset = offset;
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
104 aio->aiocb.aio_flags = IOCB_FLAG_RESFD;
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
105 aio->aiocb.aio_resfd = ngx_eventfd;
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
106
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
107 ev->handler = ngx_file_aio_event_handler;
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
108
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
109 piocb[0] = &aio->aiocb;
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
110
4129
6903dac6ad19 Fixing Linux AIO syscalls return value handling:
Igor Sysoev <igor@sysoev.ru>
parents: 4076
diff changeset
111 if (io_submit(ngx_aio_ctx, 1, piocb) == 1) {
3777
cd04f652478c update event flags after successful io_submit()
Igor Sysoev <igor@sysoev.ru>
parents: 3294
diff changeset
112 ev->active = 1;
cd04f652478c update event flags after successful io_submit()
Igor Sysoev <igor@sysoev.ru>
parents: 3294
diff changeset
113 ev->ready = 0;
cd04f652478c update event flags after successful io_submit()
Igor Sysoev <igor@sysoev.ru>
parents: 3294
diff changeset
114 ev->complete = 0;
cd04f652478c update event flags after successful io_submit()
Igor Sysoev <igor@sysoev.ru>
parents: 3294
diff changeset
115
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
116 return NGX_AGAIN;
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
117 }
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
118
4129
6903dac6ad19 Fixing Linux AIO syscalls return value handling:
Igor Sysoev <igor@sysoev.ru>
parents: 4076
diff changeset
119 err = ngx_errno;
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
120
4129
6903dac6ad19 Fixing Linux AIO syscalls return value handling:
Igor Sysoev <igor@sysoev.ru>
parents: 4076
diff changeset
121 if (err == NGX_EAGAIN) {
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
122 return ngx_read_file(file, buf, size, offset);
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
123 }
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
124
4129
6903dac6ad19 Fixing Linux AIO syscalls return value handling:
Igor Sysoev <igor@sysoev.ru>
parents: 4076
diff changeset
125 ngx_log_error(NGX_LOG_CRIT, file->log, err,
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
126 "io_submit(\"%V\") failed", &file->name);
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
127
4129
6903dac6ad19 Fixing Linux AIO syscalls return value handling:
Igor Sysoev <igor@sysoev.ru>
parents: 4076
diff changeset
128 if (err == NGX_ENOSYS) {
3294
04cfc09b8b8d export aio presence knowledge to prevent using "aio sendfile",
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
129 ngx_file_aio = 0;
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
130 return ngx_read_file(file, buf, size, offset);
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
131 }
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
132
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
133 return NGX_ERROR;
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
134 }
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
135
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
136
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
137 static void
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
138 ngx_file_aio_event_handler(ngx_event_t *ev)
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
139 {
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
140 ngx_event_aio_t *aio;
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
141
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
142 aio = ev->data;
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
143
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
144 ngx_log_debug2(NGX_LOG_DEBUG_CORE, ev->log, 0,
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
145 "aio event handler fd:%d %V", aio->fd, &aio->file->name);
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
146
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
147 aio->handler(ev);
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
148 }