Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Auto PR from release/0.7 to main #276

Merged
merged 2 commits into from
Nov 24, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/ci.linux.x86.yml
Original file line number Diff line number Diff line change
Expand Up @@ -117,4 +117,5 @@ jobs:
run: |
cd build
ulimit -l unlimited
export PHOTON_CI_EV_ENGINE=io_uring
ctest --timeout 3600 -V
4 changes: 3 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -329,8 +329,10 @@ endif ()
if (PHOTON_BUILD_TESTING)
include(CTest)

add_library(ci-tools STATIC test/ci-tools.cpp)

include_directories(photon_static ${GFLAGS_INCLUDE_DIRS} ${GOOGLETEST_INCLUDE_DIRS})
link_libraries(${GFLAGS_LIBRARIES} ${GOOGLETEST_LIBRARIES})
link_libraries(${GFLAGS_LIBRARIES} ${GOOGLETEST_LIBRARIES} ci-tools)

add_subdirectory(examples)
add_subdirectory(common/checksum/test)
Expand Down
1 change: 1 addition & 0 deletions io/fd-events.h
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ class CascadingEventEngine {

/**
* @brief Wait for events, returns number of the arrived events, and their associated `data`
* @note This call will not return until timeout, if there had been no events.
* @param[out] data
* @return -1 for error, positive integer for the number of events, 0 for no events and should run it again
* @warning Do NOT block vcpu
Expand Down
16 changes: 12 additions & 4 deletions io/iouring-wrapper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -117,11 +117,11 @@ class iouringEngine : public MasterEventEngine, public CascadingEventEngine {
}
ret = io_uring_register_files(m_ring, entries, REGISTER_FILES_MAX_NUM);
if (ret != 0) {
LOG_ERROR_RETURN(EPERM, -1, "iouring: unable to register files, ", ERRNO(-ret));
LOG_ERROR_RETURN(-ret, -1, "iouring: unable to register files, ", ERRNO(-ret));
}
}

m_eventfd = eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK);
m_eventfd = eventfd(0, EFD_CLOEXEC);
if (m_eventfd < 0) {
LOG_ERRNO_RETURN(0, -1, "iouring: failed to create eventfd");
}
Expand All @@ -135,7 +135,7 @@ class iouringEngine : public MasterEventEngine, public CascadingEventEngine {
io_uring_sqe_set_data(sqe, this);
ret = io_uring_submit(m_ring);
if (ret <= 0) {
LOG_ERROR_RETURN(0, -1, "iouring: fail to submit multishot poll, ", ERRNO(-ret));
LOG_ERROR_RETURN(-ret, -1, "iouring: fail to submit multishot poll, ", ERRNO(-ret));
}
} else {
// Register cascading engine to eventfd
Expand Down Expand Up @@ -240,6 +240,10 @@ class iouringEngine : public MasterEventEngine, public CascadingEventEngine {
io_uring_prep_poll_multishot(sqe, fd_interest.fd, fd_interest.interest);
}
io_uring_sqe_set_data(sqe, &pair.first->second.io_ctx);
int ret = io_uring_submit(m_ring);
if (ret < 0) {
LOG_ERROR_RETURN(-ret, -1, "iouring: fail to submit when adding interest, ", ERRNO(-ret));
}
return 0;
}

Expand All @@ -256,6 +260,10 @@ class iouringEngine : public MasterEventEngine, public CascadingEventEngine {

io_uring_prep_poll_remove(sqe, (__u64) &iter->second.io_ctx);
io_uring_sqe_set_data(sqe, nullptr);
int ret = io_uring_submit(m_ring);
if (ret < 0) {
LOG_ERROR_RETURN(-ret, -1, "iouring: fail to submit when removing interest, ", ERRNO(-ret));
}
return 0;
}

Expand Down Expand Up @@ -287,7 +295,7 @@ class iouringEngine : public MasterEventEngine, public CascadingEventEngine {
LOG_ERROR_RETURN(0, -1, "iouring: multi-shot poll got POLLERR");
}
if (!ctx->is_event) {
LOG_ERROR_RETURN(0, -1, "iouring: only cascading engine need to handle event. Must be a bug...")
LOG_ERROR_RETURN(0, -1, "iouring: cascading engine only needs to handle event. Must be a bug...")
}
eventCtx* event_ctx = container_of(ctx, eventCtx, io_ctx);
fdInterest fd_interest{event_ctx->event.fd, (uint32_t)evmap.translate_bitwisely(event_ctx->event.interests)};
Expand Down
2 changes: 1 addition & 1 deletion io/test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ target_link_libraries(test-syncio PRIVATE photon_shared)
add_test(NAME test-syncio COMMAND $<TARGET_FILE:test-syncio>)

add_executable(test-iouring test-iouring.cpp)
target_link_libraries(test-iouring PRIVATE photon_shared)
target_link_libraries(test-iouring PRIVATE photon_static)
add_test(NAME test-iouring COMMAND $<TARGET_FILE:test-iouring>)
endif ()
Loading