[COMMIT seastar master] file: Add out-line dma_read_impl and dma_write_impl

0 views
Skip to first unread message

Commit Bot

<bot@cloudius-systems.com>
unread,
May 4, 2023, 11:18:28 AM5/4/23
to seastar-dev@googlegroups.com, Pavel Emelyanov
From: Pavel Emelyanov <xe...@scylladb.com>
Committer: Pavel Emelyanov <xe...@scylladb.com>
Branch: master

file: Add out-line dma_read_impl and dma_write_impl

Other file public API methods are inline and call <same_name>_impl()
ones. The dma_read() and dma_write() are not like that, they are
originally out-lined. This makes further patching look clumsy wrt
API-level ifdefs, adding the _impl peers for those two makes the
whole API be switched to next level in a uniform manner.

Signed-off-by: Pavel Emelyanov <xe...@scylladb.com>

---
diff --git a/include/seastar/core/file.hh b/include/seastar/core/file.hh
--- a/include/seastar/core/file.hh
+++ b/include/seastar/core/file.hh
@@ -338,7 +338,9 @@ public:
///
/// \return a future representing the number of bytes actually read. A short
/// read may happen due to end-of-file or an I/O error.
- future<size_t> dma_read(uint64_t pos, std::vector<iovec> iov, const io_priority_class& pc = default_priority_class(), io_intent* intent = nullptr) noexcept;
+ future<size_t> dma_read(uint64_t pos, std::vector<iovec> iov, const io_priority_class& pc = default_priority_class(), io_intent* intent = nullptr) noexcept {
+ return dma_read_impl(pos, std::move(iov), pc, intent);
+ }

/// Performs a DMA write from the specified buffer.
///
@@ -366,7 +368,9 @@ public:
///
/// \return a future representing the number of bytes actually written. A short
/// write may happen due to an I/O error.
- future<size_t> dma_write(uint64_t pos, std::vector<iovec> iov, const io_priority_class& pc = default_priority_class(), io_intent* intent = nullptr) noexcept;
+ future<size_t> dma_write(uint64_t pos, std::vector<iovec> iov, const io_priority_class& pc = default_priority_class(), io_intent* intent = nullptr) noexcept {
+ return dma_write_impl(pos, std::move(iov), pc, intent);
+ }

/// Causes any previously written data to be made stable on persistent storage.
///
@@ -568,12 +572,18 @@ private:
future<size_t>
dma_write_impl(uint64_t pos, const uint8_t* buffer, size_t len, const io_priority_class& pc, io_intent* intent) noexcept;

+ future<size_t>
+ dma_write_impl(uint64_t pos, std::vector<iovec> iov, const io_priority_class& pc, io_intent* intent) noexcept;
+
future<temporary_buffer<uint8_t>>
dma_read_impl(uint64_t pos, size_t len, const io_priority_class& pc, io_intent* intent) noexcept;

future<size_t>
dma_read_impl(uint64_t aligned_pos, uint8_t* aligned_buffer, size_t aligned_len, const io_priority_class& pc, io_intent* intent) noexcept;

+ future<size_t>
+ dma_read_impl(uint64_t pos, std::vector<iovec> iov, const io_priority_class& pc, io_intent* intent) noexcept;
+
future<temporary_buffer<uint8_t>>
dma_read_exactly_impl(uint64_t pos, size_t len, const io_priority_class& pc, io_intent* intent) noexcept;

diff --git a/src/core/file.cc b/src/core/file.cc
--- a/src/core/file.cc
+++ b/src/core/file.cc
@@ -1220,7 +1220,7 @@ future<> file::flush() noexcept {
}
}

-future<size_t> file::dma_write(uint64_t pos, std::vector<iovec> iov, const io_priority_class& pc, io_intent* intent) noexcept {
+future<size_t> file::dma_write_impl(uint64_t pos, std::vector<iovec> iov, const io_priority_class& pc, io_intent* intent) noexcept {
try {
return _file_impl->write_dma(pos, std::move(iov), pc, intent);
} catch (...) {
@@ -1237,7 +1237,7 @@ file::dma_write_impl(uint64_t pos, const uint8_t* buffer, size_t len, const io_p
}
}

-future<size_t> file::dma_read(uint64_t pos, std::vector<iovec> iov, const io_priority_class& pc, io_intent* intent) noexcept {
+future<size_t> file::dma_read_impl(uint64_t pos, std::vector<iovec> iov, const io_priority_class& pc, io_intent* intent) noexcept {
try {
return _file_impl->read_dma(pos, std::move(iov), pc, intent);
} catch (...) {
Reply all
Reply to author
Forward
0 new messages