From 6f44a21e6d1132f3e795ce5802ef969de1bf970a Mon Sep 17 00:00:00 2001 From: Yingxin Cheng Date: Fri, 23 Sep 2022 13:59:01 +0800 Subject: [PATCH] crimson: create buffer from temporary_buffer with foreign-ptr by default temporary_buffer is internally shareable with a thread-unsafe ref-counter, we need to make sure it is released in the same core where it is constructed. Users that need the extra efficiency can swap to create_local as needed. Signed-off-by: Yingxin Cheng --- src/common/buffer_seastar.cc | 4 ++-- src/crimson/net/Socket.cc | 4 ++-- src/include/buffer.h | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/common/buffer_seastar.cc b/src/common/buffer_seastar.cc index 1f85c33f514..bc529c937ab 100644 --- a/src/common/buffer_seastar.cc +++ b/src/common/buffer_seastar.cc @@ -38,12 +38,12 @@ class raw_seastar_local_ptr : public raw { inline namespace v15_2_0 { -ceph::unique_leakable_ptr create_foreign(temporary_buffer&& buf) { +ceph::unique_leakable_ptr create(temporary_buffer&& buf) { return ceph::unique_leakable_ptr( new raw_seastar_foreign_ptr(std::move(buf))); } -ceph::unique_leakable_ptr create(temporary_buffer&& buf) { +ceph::unique_leakable_ptr create_local(temporary_buffer&& buf) { return ceph::unique_leakable_ptr( new raw_seastar_local_ptr(std::move(buf))); } diff --git a/src/crimson/net/Socket.cc b/src/crimson/net/Socket.cc index c2e4c6d8c8a..d58fb3987b3 100644 --- a/src/crimson/net/Socket.cc +++ b/src/crimson/net/Socket.cc @@ -36,7 +36,7 @@ struct bufferlist_consumer { if (remaining >= data.size()) { // consume the whole buffer remaining -= data.size(); - bl.append(buffer::create_foreign(std::move(data))); + bl.append(buffer::create(std::move(data))); if (remaining > 0) { // return none to request more segments return seastar::make_ready_future( @@ -49,7 +49,7 @@ struct bufferlist_consumer { } if (remaining > 0) { // consume the front - bl.append(buffer::create_foreign(data.share(0, remaining))); + bl.append(buffer::create(data.share(0, remaining))); data.trim_front(remaining); remaining = 0; } diff --git a/src/include/buffer.h b/src/include/buffer.h index 19fcfc29fb4..10dceaec299 100644 --- a/src/include/buffer.h +++ b/src/include/buffer.h @@ -153,11 +153,11 @@ struct error_code; #ifdef HAVE_SEASTAR /// create a raw buffer to wrap seastar cpu-local memory, using foreign_ptr to /// make it safe to share between cpus - ceph::unique_leakable_ptr create_foreign(seastar::temporary_buffer&& buf); + ceph::unique_leakable_ptr create(seastar::temporary_buffer&& buf); /// create a raw buffer to wrap seastar cpu-local memory, without the safety /// of foreign_ptr. the caller must otherwise guarantee that the buffer ptr is /// destructed on this cpu - ceph::unique_leakable_ptr create(seastar::temporary_buffer&& buf); + ceph::unique_leakable_ptr create_local(seastar::temporary_buffer&& buf); #endif /* -- 2.39.5