summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2021-12-27 19:49:26 +0300
committerMaxim Dounin <mdounin@mdounin.ru>2021-12-27 19:49:26 +0300
commit1f01183b9e6658749934313fd72f7f16c1918b54 (patch)
tree70456837095468405c238636c3e1aa1e63373110 /src/core
parent2a00e6141f154d77a835e53b6527a1b3225f6f74 (diff)
downloadnginx-1f01183b9e6658749934313fd72f7f16c1918b54.tar.gz
Support for sendfile(SF_NOCACHE).
The SF_NOCACHE flag, introduced in FreeBSD 11 along with the new non-blocking sendfile() implementation by glebius@, makes it possible to use sendfile() along with the "directio" directive.
Diffstat (limited to 'src/core')
-rw-r--r--src/core/ngx_output_chain.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/core/ngx_output_chain.c b/src/core/ngx_output_chain.c
index 41267eeff..857074253 100644
--- a/src/core/ngx_output_chain.c
+++ b/src/core/ngx_output_chain.c
@@ -256,10 +256,6 @@ ngx_output_chain_as_is(ngx_output_chain_ctx_t *ctx, ngx_buf_t *buf)
}
#endif
- if (buf->in_file && buf->file->directio) {
- return 0;
- }
-
sendfile = ctx->sendfile;
#if (NGX_SENDFILE_LIMIT)
@@ -270,6 +266,19 @@ ngx_output_chain_as_is(ngx_output_chain_ctx_t *ctx, ngx_buf_t *buf)
#endif
+#if !(NGX_HAVE_SENDFILE_NODISKIO)
+
+ /*
+ * With DIRECTIO, disable sendfile() unless sendfile(SF_NOCACHE)
+ * is available.
+ */
+
+ if (buf->in_file && buf->file->directio) {
+ sendfile = 0;
+ }
+
+#endif
+
if (!sendfile) {
if (!ngx_buf_in_memory(buf)) {