Skip to content

Commit

Permalink
io_uring: implement io_uring_enable_rings locally (#1915)
Browse files Browse the repository at this point in the history
Summary:
Pull Request resolved: #1915

io_uring_enable_rings was missing from liburing upstream (see axboe/liburing#773) which is breaking the open source build. See #1908

Instead just implement it locally, as it's trivial

Reviewed By: dmm-fb

Differential Revision: D42497664

fbshipit-source-id: 7241785a36046e867f907bfe74623aaeb38c4b70
  • Loading branch information
Dylan Yudaken authored and facebook-github-bot committed Jan 16, 2023
1 parent b477aa8 commit 259c9d6
Showing 1 changed file with 15 additions and 1 deletion.
16 changes: 15 additions & 1 deletion folly/experimental/io/IoUringBackend.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,20 @@ namespace folly {

namespace {

#if FOLLY_IO_URING_UP_TO_DATE
int ioUringEnableRings(FOLLY_MAYBE_UNUSED struct io_uring* ring) {
// Ideally this would call ::io_uring_enable_rings directly which just runs
// the below however this was missing from a stable version of liburing, which
// means that some distributions were not able to compile it. see
// https://github.com/axboe/liburing/issues/773

// since it is so simple, just implement it here until the fix rolls out to an
// acceptable number of OSS distributions.
return ::io_uring_register(
ring->ring_fd, IORING_REGISTER_ENABLE_RINGS, nullptr, 0);
}
#endif

struct SignalRegistry {
struct SigInfo {
struct sigaction sa_ {};
Expand Down Expand Up @@ -1360,7 +1374,7 @@ void IoUringBackend::delayedInit() {
if (usingDeferTaskrun_) {
// usingDeferTaskrun_ is guarded already on having an up to date liburing
#if FOLLY_IO_URING_UP_TO_DATE
int ret = ::io_uring_enable_rings(&ioRing_);
int ret = ioUringEnableRings(&ioRing_);
if (ret) {
LOG(ERROR) << "io_uring_enable_rings gave " << folly::errnoStr(-ret);
}
Expand Down

0 comments on commit 259c9d6

Please sign in to comment.