Project

General

Profile

Actions

Bug #4680

closed

[PATCH] io.c: fix busy wait with sendfile()

Added by normalperson (Eric Wong) over 13 years ago. Updated over 13 years ago.

Status:
Closed
Target version:
ruby -v:
ruby 1.9.3dev (2011-05-11 trunk 31521) [x86_64-linux]
Backport:
[ruby-core:36150]

Description

io.c: fix busy wait with sendfile()

When combined with a non-blocking descriptor for sendfile(),
select() is used improperly to wait on the writer in the
read FD set along with the reader.

This causes select() to return immediately if src_fd is a
regular file and select() always returns immediately for regular
files (at least under Linux).

Thus, we need to wait on the writer independently of the reader.
Under Linux, we know the reader must must be a regular file if
sendfile() is to be used so we avoid waiting on the reader.

Test script attached maxes out my CPU.


Files

0001-io.c-fix-busy-wait-with-sendfile.patch (2.82 KB) 0001-io.c-fix-busy-wait-with-sendfile.patch normalperson (Eric Wong), 05/13/2011 05:45 AM
copy_stream_false_select.rb (456 Bytes) copy_stream_false_select.rb normalperson (Eric Wong), 05/13/2011 05:45 AM

Related issues 1 (0 open1 closed)

Related to Ruby master - Bug #4683: [PATCH] io.c: copy_stream execute interrupts and retryClosedakr (Akira Tanaka)05/13/2011Actions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0