From: Kefu Chai Date: Tue, 18 Dec 2018 11:31:15 +0000 (+0800) Subject: os: rename aio.h to avoid conflict X-Git-Tag: v14.1.0~559^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=7fb4712aeadcb2a095ad1efe8ddb098efe9d3342;p=ceph.git os: rename aio.h to avoid conflict FreeBSD's libc offers . Signed-off-by: Kefu Chai --- diff --git a/src/os/bluestore/BlockDevice.h b/src/os/bluestore/BlockDevice.h index 5faa26073baf..92c1443546b4 100644 --- a/src/os/bluestore/BlockDevice.h +++ b/src/os/bluestore/BlockDevice.h @@ -30,7 +30,7 @@ #include "common/ceph_mutex.h" #ifdef HAVE_LIBAIO -#include "aio.h" +#include "ceph_aio.h" #endif #include "include/ceph_assert.h" #include "include/buffer.h" diff --git a/src/os/bluestore/KernelDevice.h b/src/os/bluestore/KernelDevice.h index e4dbcda37048..e24b45b3ac08 100644 --- a/src/os/bluestore/KernelDevice.h +++ b/src/os/bluestore/KernelDevice.h @@ -22,7 +22,7 @@ #include "common/Thread.h" #include "include/utime.h" -#include "aio.h" +#include "ceph_aio.h" #include "BlockDevice.h" class KernelDevice : public BlockDevice { diff --git a/src/os/bluestore/PMEMDevice.h b/src/os/bluestore/PMEMDevice.h index 51c602968db1..3077375a2ac8 100644 --- a/src/os/bluestore/PMEMDevice.h +++ b/src/os/bluestore/PMEMDevice.h @@ -21,7 +21,7 @@ #include "os/fs/FS.h" #include "include/interval_set.h" -#include "aio.h" +#include "ceph_aio.h" #include "BlockDevice.h" class PMEMDevice : public BlockDevice { diff --git a/src/os/bluestore/aio.cc b/src/os/bluestore/aio.cc index 481143449259..46856b85b61d 100644 --- a/src/os/bluestore/aio.cc +++ b/src/os/bluestore/aio.cc @@ -2,7 +2,7 @@ // vim: ts=8 sw=2 smarttab #include -#include "aio.h" +#include "ceph_aio.h" std::ostream& operator<<(std::ostream& os, const aio_t& aio) { diff --git a/src/os/bluestore/aio.h b/src/os/bluestore/aio.h deleted file mode 100644 index bc6acb7ec5f3..000000000000 --- a/src/os/bluestore/aio.h +++ /dev/null @@ -1,90 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab - -#pragma once -# include - -#include -#include - -#include "include/buffer.h" -#include "include/types.h" - -struct aio_t { - struct iocb iocb{}; // must be first element; see shenanigans in aio_queue_t - void *priv; - int fd; - boost::container::small_vector iov; - uint64_t offset, length; - long rval; - bufferlist bl; ///< write payload (so that it remains stable for duration) - - boost::intrusive::list_member_hook<> queue_item; - - aio_t(void *p, int f) : priv(p), fd(f), offset(0), length(0), rval(-1000) { - } - - void pwritev(uint64_t _offset, uint64_t len) { - offset = _offset; - length = len; - io_prep_pwritev(&iocb, fd, &iov[0], iov.size(), offset); - } - void pread(uint64_t _offset, uint64_t len) { - offset = _offset; - length = len; - bufferptr p = buffer::create_small_page_aligned(length); - io_prep_pread(&iocb, fd, p.c_str(), length, offset); - bl.append(std::move(p)); - } - - long get_return_value() { - return rval; - } -}; - -std::ostream& operator<<(std::ostream& os, const aio_t& aio); - -typedef boost::intrusive::list< - aio_t, - boost::intrusive::member_hook< - aio_t, - boost::intrusive::list_member_hook<>, - &aio_t::queue_item> > aio_list_t; - -struct aio_queue_t { - int max_iodepth; - io_context_t ctx; - - typedef list::iterator aio_iter; - - explicit aio_queue_t(unsigned max_iodepth) - : max_iodepth(max_iodepth), - ctx(0) { - } - ~aio_queue_t() { - ceph_assert(ctx == 0); - } - - int init() { - ceph_assert(ctx == 0); - int r = io_setup(max_iodepth, &ctx); - if (r < 0) { - if (ctx) { - io_destroy(ctx); - ctx = 0; - } - } - return r; - } - void shutdown() { - if (ctx) { - int r = io_destroy(ctx); - ceph_assert(r == 0); - ctx = 0; - } - } - - int submit_batch(aio_iter begin, aio_iter end, uint16_t aios_size, - void *priv, int *retries); - int get_next_completed(int timeout_ms, aio_t **paio, int max); -}; diff --git a/src/os/bluestore/ceph_aio.h b/src/os/bluestore/ceph_aio.h new file mode 100644 index 000000000000..bc6acb7ec5f3 --- /dev/null +++ b/src/os/bluestore/ceph_aio.h @@ -0,0 +1,90 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab + +#pragma once +# include + +#include +#include + +#include "include/buffer.h" +#include "include/types.h" + +struct aio_t { + struct iocb iocb{}; // must be first element; see shenanigans in aio_queue_t + void *priv; + int fd; + boost::container::small_vector iov; + uint64_t offset, length; + long rval; + bufferlist bl; ///< write payload (so that it remains stable for duration) + + boost::intrusive::list_member_hook<> queue_item; + + aio_t(void *p, int f) : priv(p), fd(f), offset(0), length(0), rval(-1000) { + } + + void pwritev(uint64_t _offset, uint64_t len) { + offset = _offset; + length = len; + io_prep_pwritev(&iocb, fd, &iov[0], iov.size(), offset); + } + void pread(uint64_t _offset, uint64_t len) { + offset = _offset; + length = len; + bufferptr p = buffer::create_small_page_aligned(length); + io_prep_pread(&iocb, fd, p.c_str(), length, offset); + bl.append(std::move(p)); + } + + long get_return_value() { + return rval; + } +}; + +std::ostream& operator<<(std::ostream& os, const aio_t& aio); + +typedef boost::intrusive::list< + aio_t, + boost::intrusive::member_hook< + aio_t, + boost::intrusive::list_member_hook<>, + &aio_t::queue_item> > aio_list_t; + +struct aio_queue_t { + int max_iodepth; + io_context_t ctx; + + typedef list::iterator aio_iter; + + explicit aio_queue_t(unsigned max_iodepth) + : max_iodepth(max_iodepth), + ctx(0) { + } + ~aio_queue_t() { + ceph_assert(ctx == 0); + } + + int init() { + ceph_assert(ctx == 0); + int r = io_setup(max_iodepth, &ctx); + if (r < 0) { + if (ctx) { + io_destroy(ctx); + ctx = 0; + } + } + return r; + } + void shutdown() { + if (ctx) { + int r = io_destroy(ctx); + ceph_assert(r == 0); + ctx = 0; + } + } + + int submit_batch(aio_iter begin, aio_iter end, uint16_t aios_size, + void *priv, int *retries); + int get_next_completed(int timeout_ms, aio_t **paio, int max); +};