]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson: create buffer from temporary_buffer with foreign-ptr by default 48217/head
authorYingxin Cheng <yingxin.cheng@intel.com>
Fri, 23 Sep 2022 05:59:01 +0000 (13:59 +0800)
committerYingxin Cheng <yingxin.cheng@intel.com>
Fri, 23 Sep 2022 06:03:42 +0000 (14:03 +0800)
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 <yingxin.cheng@intel.com>
src/common/buffer_seastar.cc
src/crimson/net/Socket.cc
src/include/buffer.h

index 1f85c33f51425baa609de16ca662733730533e6f..bc529c937ab2f66997f16eef1619e43bbcc0594a 100644 (file)
@@ -38,12 +38,12 @@ class raw_seastar_local_ptr : public raw {
 
 inline namespace v15_2_0 {
 
-ceph::unique_leakable_ptr<buffer::raw> create_foreign(temporary_buffer&& buf) {
+ceph::unique_leakable_ptr<buffer::raw> create(temporary_buffer&& buf) {
   return ceph::unique_leakable_ptr<buffer::raw>(
     new raw_seastar_foreign_ptr(std::move(buf)));
 }
 
-ceph::unique_leakable_ptr<buffer::raw> create(temporary_buffer&& buf) {
+ceph::unique_leakable_ptr<buffer::raw> create_local(temporary_buffer&& buf) {
   return ceph::unique_leakable_ptr<buffer::raw>(
     new raw_seastar_local_ptr(std::move(buf)));
 }
index c2e4c6d8c8a58f4d7f68739084451b24c5e116ad..d58fb3987b3562cf223873491844bb1c882d98dc 100644 (file)
@@ -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<consumption_result_type>(
@@ -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;
     }
index 19fcfc29fb45d5986b87e0c46ca99df7a71e47ca..10dceaec2991752ba43b731f906cb6ddef74ad65 100644 (file)
@@ -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<buffer::raw> create_foreign(seastar::temporary_buffer<char>&& buf);
+  ceph::unique_leakable_ptr<buffer::raw> create(seastar::temporary_buffer<char>&& 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<buffer::raw> create(seastar::temporary_buffer<char>&& buf);
+  ceph::unique_leakable_ptr<buffer::raw> create_local(seastar::temporary_buffer<char>&& buf);
 #endif
 
   /*