You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
2.0 KiB
55 lines
2.0 KiB
https://bugs.gentoo.org/891633
|
|
https://github.com/facebook/folly/issues/1908
|
|
https://github.com/facebook/folly/commit/259c9d6a4f0eb6d80e0263c2fe5d1af5bff116dc
|
|
|
|
From 259c9d6a4f0eb6d80e0263c2fe5d1af5bff116dc Mon Sep 17 00:00:00 2001
|
|
From: Dylan Yudaken <dylany@meta.com>
|
|
Date: Mon, 16 Jan 2023 01:20:04 -0800
|
|
Subject: [PATCH] io_uring: implement io_uring_enable_rings locally (#1915)
|
|
|
|
Summary:
|
|
Pull Request resolved: https://github.com/facebook/folly/pull/1915
|
|
|
|
io_uring_enable_rings was missing from liburing upstream (see https://github.com/axboe/liburing/issues/773) which is breaking the open source build. See https://github.com/facebook/folly/issues/1908
|
|
|
|
Instead just implement it locally, as it's trivial
|
|
|
|
Reviewed By: dmm-fb
|
|
|
|
Differential Revision: D42497664
|
|
|
|
fbshipit-source-id: 7241785a36046e867f907bfe74623aaeb38c4b70
|
|
--- a/folly/experimental/io/IoUringBackend.cpp
|
|
+++ b/folly/experimental/io/IoUringBackend.cpp
|
|
@@ -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_ {};
|
|
@@ -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);
|
|
}
|
|
|