Skip to content

Commit

Permalink
Support for sendfile(SF_NOCACHE).
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
mdounin committed Dec 27, 2021
1 parent 2a00e61 commit 1f01183
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 4 deletions.
17 changes: 13 additions & 4 deletions src/core/ngx_output_chain.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -268,6 +264,19 @@ ngx_output_chain_as_is(ngx_output_chain_ctx_t *ctx, ngx_buf_t *buf)
sendfile = 0;
}

#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) {
Expand Down
6 changes: 6 additions & 0 deletions src/event/ngx_event_openssl.c
Original file line number Diff line number Diff line change
Expand Up @@ -2955,7 +2955,13 @@ ngx_ssl_sendfile(ngx_connection_t *c, ngx_buf_t *file, size_t size)
ngx_set_errno(0);

#if (NGX_HAVE_SENDFILE_NODISKIO)

flags = (c->busy_count <= 2) ? SF_NODISKIO : 0;

if (file->file->directio) {
flags |= SF_NOCACHE;
}

#else
flags = 0;
#endif
Expand Down
6 changes: 6 additions & 0 deletions src/os/unix/ngx_freebsd_sendfile_chain.c
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,13 @@ ngx_freebsd_sendfile_chain(ngx_connection_t *c, ngx_chain_t *in, off_t limit)
sent = 0;

#if (NGX_HAVE_SENDFILE_NODISKIO)

flags = (c->busy_count <= 2) ? SF_NODISKIO : 0;

if (file->file->directio) {
flags |= SF_NOCACHE;
}

#endif

rc = sendfile(file->file->fd, c->fd, file->file_pos,
Expand Down

0 comments on commit 1f01183

Please sign in to comment.