From: Sage Weil Date: Thu, 16 Apr 2015 00:01:59 +0000 (-0700) Subject: buffer: add prepare_iov() method X-Git-Tag: v9.1.0~324^2~21 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b339eff08b5b447824314e1d6901b43833711900;p=ceph.git buffer: add prepare_iov() method Signed-off-by: Sage Weil --- diff --git a/src/common/buffer.cc b/src/common/buffer.cc index 06537f5eca1e..c96d6fac78ae 100644 --- a/src/common/buffer.cc +++ b/src/common/buffer.cc @@ -1825,6 +1825,18 @@ int buffer::list::write_fd(int fd) const return 0; } +void buffer::list::prepare_iov(std::vector *piov) const +{ + piov->resize(_buffers.size()); + unsigned n = 0; + for (std::list::const_iterator p = _buffers.begin(); + p != _buffers.end(); + ++p, ++n) { + (*piov)[n].iov_base = (void *)p->c_str(); + (*piov)[n].iov_len = p->length(); + } +} + int buffer::list::write_fd_zero_copy(int fd) const { if (!can_zero_copy()) diff --git a/src/include/buffer.h b/src/include/buffer.h index 62a50d2d2a56..845bf338708d 100644 --- a/src/include/buffer.h +++ b/src/include/buffer.h @@ -23,6 +23,7 @@ #endif #include +#include #if defined(__linux__) // For malloc(2). #include @@ -39,6 +40,7 @@ #include #include #include +#include #include #include @@ -490,6 +492,7 @@ public: int write_file(const char *fn, int mode=0644); int write_fd(int fd) const; int write_fd_zero_copy(int fd) const; + void prepare_iov(std::vector *piov) const; uint32_t crc32c(uint32_t crc) const; void invalidate_crc(); };