From 11917250dc9bd1050819f76ddc7970d30409b69a Mon Sep 17 00:00:00 2001 From: Anthony Astolfi Date: Thu, 29 Feb 2024 17:15:52 -0500 Subject: [PATCH] Use unique StatusCode for IoRing shutdown (handlers for incomplete ops). --- src/llfs/ioring_impl.cpp | 2 +- src/llfs/ioring_log_flush_op.ipp | 3 ++- src/llfs/status_code.cpp | 3 +++ src/llfs/status_code.hpp | 1 + 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/llfs/ioring_impl.cpp b/src/llfs/ioring_impl.cpp index 6b844f6..afe5357 100644 --- a/src/llfs/ioring_impl.cpp +++ b/src/llfs/ioring_impl.cpp @@ -121,7 +121,7 @@ IoRingImpl::~IoRingImpl() noexcept } batt::invoke_all_handlers(&this->completions_, // - StatusOr{Status{batt::StatusCode::kClosed}}); + StatusOr{::llfs::make_status(StatusCode::kIoRingShutDown)}); } //==#==========+==+=+=++=+++++++++++-+-+--+----- --- -- - - - - diff --git a/src/llfs/ioring_log_flush_op.ipp b/src/llfs/ioring_log_flush_op.ipp index d2dce5d..b46adbf 100644 --- a/src/llfs/ioring_log_flush_op.ipp +++ b/src/llfs/ioring_log_flush_op.ipp @@ -563,7 +563,8 @@ inline bool BasicIoRingLogFlushOp::handle_errors(const StatusOr } return true; } - if (!this->quiet_failure_logging) { + if (!this->quiet_failure_logging && + result.status() != ::llfs::make_status(StatusCode::kIoRingShutDown)) { LLFS_LOG_INFO() << "flush failed: " << result.status(); } else { LLFS_VLOG(1) << "flush failed: " << result.status(); diff --git a/src/llfs/status_code.cpp b/src/llfs/status_code.cpp index ab224c8..8b9d539 100644 --- a/src/llfs/status_code.cpp +++ b/src/llfs/status_code.cpp @@ -133,6 +133,9 @@ bool initialize_status_codes() "PageCache::put_view failed; page layout id is not registered"), // 62, CODE_WITH_MSG_(StatusCode::kPageCacheSlotNotInitialized, "The page cache slot for this PageId is not initialized"), // 63, + CODE_WITH_MSG_( + StatusCode::kIoRingShutDown, + "The operation could not be completed because the IoRing was shut down"), // 64, }); return initialized; } diff --git a/src/llfs/status_code.hpp b/src/llfs/status_code.hpp index 127b5a8..57ad85f 100644 --- a/src/llfs/status_code.hpp +++ b/src/llfs/status_code.hpp @@ -79,6 +79,7 @@ enum struct StatusCode { kPageHeaderBadLayoutId = 61, kPutViewUnknownLayoutId = 62, kPageCacheSlotNotInitialized = 63, + kIoRingShutDown = 64, }; bool initialize_status_codes();