From e64d16d54ebc0a60d43aa68e804d874e7a443f05 Mon Sep 17 00:00:00 2001 From: Haomai Wang Date: Mon, 4 Jan 2016 22:30:05 +0800 Subject: [PATCH] BlockDevice: Fix compile error Signed-off-by: Haomai Wang --- src/os/bluestore/BlockDevice.cc | 21 +++++++++++++++++++++ src/os/bluestore/BlockDevice.h | 7 +++++-- src/os/bluestore/NVMEDevice.h | 2 -- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/os/bluestore/BlockDevice.cc b/src/os/bluestore/BlockDevice.cc index 741921a8d80b4..528d71114ded9 100644 --- a/src/os/bluestore/BlockDevice.cc +++ b/src/os/bluestore/BlockDevice.cc @@ -19,6 +19,27 @@ #include "NVMEDevice.h" #endif +#include "common/debug.h" + +#define dout_subsys ceph_subsys_bdev +#undef dout_prefix +#define dout_prefix *_dout << "bdev " + +void IOContext::aio_wait() +{ + Mutex::Locker l(lock); + // see _aio_thread for waker logic + num_waiting.inc(); + while (num_running.read() > 0 || num_reading.read() > 0) { + dout(10) << __func__ << " " << this + << " waiting for " << num_running.read() << " aios and/or " + << num_reading.read() << " readers to complete" << dendl; + cond.Wait(lock); + } + num_waiting.dec(); + dout(20) << __func__ << " " << this << " done" << dendl; +} + BlockDevice *BlockDevice::create(const string& type, aio_callback_t cb, void *cbpriv) { if (type == "kernel") { diff --git a/src/os/bluestore/BlockDevice.h b/src/os/bluestore/BlockDevice.h index 59fbbfb8c423f..b668048e6243c 100644 --- a/src/os/bluestore/BlockDevice.h +++ b/src/os/bluestore/BlockDevice.h @@ -17,6 +17,8 @@ #ifndef CEPH_OS_BLUESTORE_BLOCKDEVICE_H #define CEPH_OS_BLUESTORE_BLOCKDEVICE_H +#include "os/fs/FS.h" + /// track in-flight io struct IOContext { void *priv; @@ -52,10 +54,11 @@ struct IOContext { class BlockDevice { public: + virtual ~BlockDevice() {} typedef void (*aio_callback_t)(void *handle, void *aio); - static BlockDevice *create(CephContext *cct, const string& type, - aio_callback_t cb, void *cbpriv); + static BlockDevice *create( + const string& type, aio_callback_t cb, void *cbpriv); virtual void aio_submit(IOContext *ioc) = 0; diff --git a/src/os/bluestore/NVMEDevice.h b/src/os/bluestore/NVMEDevice.h index 1d529bb0645ca..81a67621288cc 100644 --- a/src/os/bluestore/NVMEDevice.h +++ b/src/os/bluestore/NVMEDevice.h @@ -17,8 +17,6 @@ #ifndef CEPH_OS_BLUESTORE_NVMEDEVICE #define CEPH_OS_BLUESTORE_NVMEDEVICE -#include "include/interval_set.h" - #include "BlockDevice.h" class NVMEDevice : public BlockDevice { -- 2.39.5