From: Patrick Donnelly Date: Fri, 7 Sep 2018 21:25:43 +0000 (-0700) Subject: msg: set O_NONBLOCK on file status flags X-Git-Tag: v12.2.9~49^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=22b49b332cba9ff2798abb120a89287b1616a7e9;p=ceph.git msg: set O_NONBLOCK on file status flags There is no NONBLOCK file **descriptor** flag. Signed-off-by: Patrick Donnelly (cherry picked from commit 7e91c8b5aa4548e15c01702f24aaf1f2fccf0468) Conflicts: src/msg/simple/Accepter.cc --- diff --git a/src/msg/simple/Accepter.cc b/src/msg/simple/Accepter.cc index 5779cc7abec6..d177793c5b0c 100644 --- a/src/msg/simple/Accepter.cc +++ b/src/msg/simple/Accepter.cc @@ -55,6 +55,14 @@ static int set_close_on_exec(int fd) int Accepter::create_selfpipe(int *pipe_rd, int *pipe_wr) { int selfpipe[2]; int ret = ::pipe2(selfpipe, (O_CLOEXEC|O_NONBLOCK)); + if (ret == 0) { + for (size_t i = 0; i < std::size(selfpipe); i++) { + int f = fcntl(selfpipe[i], F_GETFL); + ceph_assert(f != -1); + f = fcntl(selfpipe[i], F_SETFL, f | O_NONBLOCK); + ceph_assert(f != -1); + } + } if (ret < 0 ) { lderr(msgr->cct) << __func__ << " unable to create the selfpipe: " << cpp_strerror(errno) << dendl;