#include "librbd/Utils.h"
#include "librbd/asio/ContextWQ.h"
+#include <shared_mutex> // for std::shared_lock
+
namespace librbd
{
#include <vector>
#include <boost/algorithm/string/predicate.hpp>
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::ConfigWatcher: " \
#include "librbd/deep_copy/SnapshotCopyRequest.h"
#include "librbd/internal.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::DeepCopyRequest: " \
#include "librbd/Utils.h"
#include "librbd/asio/ContextWQ.h"
#include "common/ceph_mutex.h"
+#include "common/Clock.h" // for ceph_clock_now()
#include "common/dout.h"
+#include "common/perf_counters.h"
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#include "osdc/Striper.h"
#include <boost/algorithm/string/predicate.hpp>
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::ImageCtx: "
#include "common/errno.h"
#include <boost/bind/bind.hpp>
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::ImageWatcher: "
#include "cls/rbd/cls_rbd_types.h"
#include "include/stringify.h"
#include "osdc/Striper.h"
+
+#include <iomanip>
+#include <shared_mutex> // for std::shared_lock
#include <sstream>
#define dout_subsys ceph_subsys_rbd
#include "librbd/Utils.h"
#include <boost/optional.hpp>
+#include <shared_mutex> // for std::shared_lock
+
class Context;
namespace ZTracer { struct Trace; }
#include "librbd/operation/SnapshotLimitRequest.h"
#include "librbd/operation/SparsifyRequest.h"
#include <set>
+#include <shared_mutex> // for std::shared_lock
#include <boost/bind/bind.hpp>
#include <boost/scope_exit.hpp>
#include "include/stringify.h"
#include "librbd/WatchNotifyTypes.h"
+#include <map>
+
namespace librbd {
namespace watch_notify {
// re-include our assert to clobber the system one; fix dout:
#include "include/ceph_assert.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
namespace librbd {
#include "librbd/watcher/Notifier.h"
#include "librbd/watcher/Types.h"
#include <string>
+#include <shared_mutex> // for std::shared_lock
#include <utility>
namespace librbd {
#include <boost/tuple/tuple.hpp>
#include <list>
#include <map>
+#include <shared_mutex> // for std::shared_lock
#include <vector>
#define dout_subsys ceph_subsys_rbd
#include "librbd/internal.h"
#include "librbd/io/AioCompletion.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::api::Group: " << __func__ << ": "
#include "librbd/io/ImageDispatchSpec.h"
#include <boost/scope_exit.hpp>
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::api::Image: " << __func__ << ": "
#include <boost/scope_exit.hpp>
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::Migration: " << __func__ << ": "
#include "json_spirit/json_spirit.h"
#include <algorithm>
+#include <shared_mutex> // for std::shared_lock
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#include <boost/variant.hpp>
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::api::Snapshot: " << __func__ << ": "
#include "include/ceph_assert.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::cache::ObjectCacherWriteback: "
#define CEPH_LIBRBD_CACHE_OBJECT_CACHER_WRITEBACK_H
#include "common/snap_types.h"
+#include "include/unordered_map.h"
#include "osd/osd_types.h"
#include "osdc/WritebackHandler.h"
#include <queue>
#include "include/buffer.h"
#include "include/Context.h"
#include "include/ceph_assert.h"
+#include "common/Clock.h" // for ceph_clock_now()
+#include "common/debug.h"
#include "common/deleter.h"
-#include "common/dout.h"
#include "common/environment.h"
#include "common/errno.h"
#include "common/hostname.h"
#include "common/WorkQueue.h"
#include "common/Timer.h"
#include "common/perf_counters.h"
+#include "common/perf_counters_collection.h"
#include "librbd/ImageCtx.h"
#include "librbd/asio/ContextWQ.h"
#include "librbd/cache/pwl/ImageCacheState.h"
#include "librbd/cache/pwl/LogEntry.h"
#include "librbd/plugin/Api.h"
+
#include <map>
+#include <shared_mutex> // for std::shared_lock
#include <vector>
#undef dout_subsys
#include "librbd/cache/pwl/ImageCacheState.h"
#include "librbd/ImageCtx.h"
#include "librbd/Operations.h"
+#include "common/Clock.h" // for ceph_clock_now()
#include "common/config_proxy.h"
+#include "common/debug.h"
#include "common/environment.h"
#include "common/hostname.h"
#include "librbd/plugin/Api.h"
+#include <shared_mutex> // for std::shared_lock
+
#undef dout_subsys
#define dout_subsys ceph_subsys_rbd_pwl
#undef dout_prefix
#include <iostream>
#include "LogOperation.h"
#include "librbd/cache/pwl/Types.h"
+#include "common/debug.h"
+#include "common/perf_counters.h"
#define dout_subsys ceph_subsys_rbd_pwl
#undef dout_prefix
#include "librbd/BlockGuard.h"
#include "librbd/cache/pwl/LogEntry.h"
#include "librbd/cache/pwl/AbstractWriteLog.h"
+#include "common/Clock.h" // for ceph_clock_now()
+#include "common/debug.h"
#define dout_subsys ceph_subsys_rbd_pwl
#undef dout_prefix
#ifndef CEPH_LIBRBD_CACHE_PWL_REQUEST_H
#define CEPH_LIBRBD_CACHE_PWL_REQUEST_H
+#include "common/perf_counters.h"
#include "include/Context.h"
#include "librbd/cache/pwl/Types.h"
#include "librbd/cache/pwl/LogOperation.h"
#include "librbd/cache/pwl/AbstractWriteLog.h"
#include "librbd/plugin/Api.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd_pwl
#undef dout_prefix
#define dout_prefix *_dout << "librbd::cache::pwl:ShutdownRequest: " \
#include <iostream>
#include "Types.h"
#include "common/ceph_context.h"
+#include "common/Formatter.h"
#include "include/Context.h"
#include "include/stringify.h"
#include <vector>
#include "librbd/BlockGuard.h"
#include "librbd/io/Types.h"
+#include "include/utime.h"
namespace ceph {
class Formatter;
// vim: ts=8 sw=2 smarttab
#include "LogOperation.h"
+#include "common/debug.h"
+#include "common/perf_counters.h"
#define dout_subsys ceph_subsys_rbd_pwl
#undef dout_prefix
// vim: ts=8 sw=2 smarttab
#include "ReadRequest.h"
+#include "common/Clock.h" // for ceph_clock_now()
+#include "common/debug.h"
+#include "common/perf_counters.h"
#define dout_subsys ceph_subsys_rbd_pwl
#undef dout_prefix
#include "include/buffer.h"
#include "include/Context.h"
#include "include/ceph_assert.h"
+#include "common/Clock.h" // for ceph_clock_now()
#include "common/deleter.h"
#include "common/dout.h"
#include "common/environment.h"
// vim: ts=8 sw=2 smarttab
#include "ReadRequest.h"
+#include "common/Clock.h" // for ceph_clock_now()
+#include "common/debug.h"
+#include "common/perf_counters.h"
#define dout_subsys ceph_subsys_rbd_pwl
#undef dout_prefix
#include "include/buffer.h"
#include "include/Context.h"
#include "include/ceph_assert.h"
+#include "common/Clock.h" // for ceph_clock_now()
#include "common/deleter.h"
#include "common/dout.h"
#include "common/environment.h"
#include "librbd/object_map/DiffRequest.h"
#include "osdc/Striper.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::deep_copy::ImageCopyRequest: " \
#include "librbd/io/Utils.h"
#include "osdc/Striper.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::deep_copy::ObjectCopyRequest: " \
#include "librbd/image/AttachParentRequest.h"
#include "librbd/image/DetachParentRequest.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::deep_copy::SetHeadRequest: " \
#include "librbd/asio/ContextWQ.h"
#include "osdc/Striper.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::deep_copy::SnapshotCopyRequest: " \
#include "librbd/Utils.h"
#include "osdc/Striper.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::deep_copy::SnapshotCreateRequest: " \
#include "librbd/io/ImageDispatchSpec.h"
#include "librbd/io/ImageDispatcherInterface.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::exclusive_lock::ImageDispatch: " \
#include "librbd/journal/Policy.h"
#include "librbd/PluginRegistry.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::exclusive_lock::PostAcquireRequest: " \
#include "librbd/io/Types.h"
#include "librbd/PluginRegistry.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::exclusive_lock::PreReleaseRequest: " \
#include "librbd/Utils.h"
#include "librbd/image/RefreshRequest.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::image::AttachChildRequest: " << this \
#include "librbd/io/ImageDispatchSpec.h"
#include "librbd/io/ObjectDispatcherInterface.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::image::CloseRequest: "
#include "librbd/image/DetachChildRequest.h"
#include "common/dout.h"
+#include "common/Clock.h" // for ceph_clock_now()
#include "common/errno.h"
#include "cls/rbd/cls_rbd_client.h"
#include "librbd/ExclusiveLock.h"
#include "librbd/asio/ContextWQ.h"
#include "librbd/journal/DisabledPolicy.h"
#include "librbd/trash/RemoveRequest.h"
+
+#include <shared_mutex> // for std::shared_lock
#include <string>
#define dout_subsys ceph_subsys_rbd
#include "librbd/Utils.h"
#include <algorithm>
+#include <shared_mutex> // for std::shared_lock
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#include <boost/algorithm/string/predicate.hpp>
#include "include/ceph_assert.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::image::OpenRequest: "
#include "librbd/journal/DisabledPolicy.h"
#include "librbd/operation/SnapshotRemoveRequest.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::image::PreRemoveRequest: " << this \
#include "librbd/io/ImageDispatcherInterface.h"
#include "librbd/journal/Policy.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::image::RefreshRequest: "
#include "librbd/mirror/DisableRequest.h"
#include "librbd/operation/TrimRequest.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::image::RemoveRequest: " << this << " " \
#include "librbd/image/RefreshParentRequest.h"
#include "librbd/io/ImageDispatcherInterface.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::image::SetSnapRequest: "
#include <boost/variant.hpp>
#include "include/ceph_assert.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd: "
#include "librbd/AsioEngine.h"
#include "librbd/ImageCtx.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::io::AsyncOperation: "
#include <boost/lambda/bind.hpp>
#include <boost/lambda/construct.hpp>
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::io::CopyupRequest: " << this \
#include "librbd/io/ImageRequest.h"
#include "librbd/io/ObjectDispatcherInterface.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::io::ImageDispatch: " << this << " " \
#include "librbd/io/WriteBlockImageDispatch.h"
#include <boost/variant.hpp>
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::io::ImageDispatcher: " << this \
#include <algorithm>
#include <functional>
#include <map>
+#include <shared_mutex> // for std::shared_lock
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#include "librbd/io/ObjectDispatchSpec.h"
#include <boost/variant.hpp>
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::io::ObjectDispatcher: " << this \
#include <boost/optional.hpp>
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::io::ObjectRequest: " << this \
#include "librbd/io/SimpleSchedulerObjectDispatch.h"
#include "include/neorados/RADOS.hpp"
#include "common/ceph_time.h"
+#include "common/Clock.h" // for ceph_clock_now()
#include "common/Timer.h"
#include "common/errno.h"
#include "librbd/AsioEngine.h"
#include "osd/osd_types.h"
#include "osdc/Striper.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::io::util: " << __func__ << ": "
#include "common/Throttle.h"
#include "librbd/io/ReadResult.h"
#include "librbd/io/Types.h"
+
#include <list>
+#include <shared_mutex> // for std::shared_lock
struct Context;
#include "librbd/io/AioCompletion.h"
#include "librbd/io/ImageRequest.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::journal::Replay: " << this << " "
#include "librbd/io/AioCompletion.h"
#include "librbd/io/ReadResult.h"
#include <algorithm>
+#include <shared_mutex> // for std::shared_lock
#include <string>
#include <utility>
#include <vector>
#include "librbd/mirror/GetInfoRequest.h"
#include "librbd/mirror/snapshot/DemoteRequest.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::mirror::DemoteRequest: " << this \
#include "librbd/mirror/ImageStateUpdateRequest.h"
#include "librbd/mirror/snapshot/PromoteRequest.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::mirror::DisableRequest: " \
#include "librbd/Journal.h"
#include "librbd/Utils.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::mirror::GetInfoRequest: " << this \
#include "librbd/mirror/snapshot/Utils.h"
#include "librbd/mirror/snapshot/WriteImageStateRequest.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#include "librbd/mirror/snapshot/UnlinkPeerRequest.h"
#include "librbd/mirror/snapshot/Utils.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#include "librbd/mirror/snapshot/CreatePrimaryRequest.h"
#include "librbd/mirror/snapshot/Utils.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::mirror::snapshot::PromoteRequest: " \
#include <boost/algorithm/string/predicate.hpp>
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#include "librbd/ImageCtx.h"
#include "librbd/mirror/snapshot/Utils.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#include "librbd/ObjectMap.h"
#include "librbd/Utils.h"
#include "osdc/Striper.h"
+
+#include <shared_mutex> // for std::shared_lock
#include <string>
#define dout_subsys ceph_subsys_rbd
#include "common/ceph_mutex.h"
#include "librbd/object_map/Types.h"
#include <set>
+#include <shared_mutex> // for std::shared_lock
struct Context;
#include "librbd/Utils.h"
#include "osdc/Striper.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::object_map::RefreshRequest: "
#include "librbd/ImageCtx.h"
#include "librbd/object_map/InvalidateRequest.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::object_map::Request: "
#include "librbd/ImageCtx.h"
#include "librbd/ObjectMap.h"
#include "cls/lock/cls_lock_client.h"
+
#include <iostream>
+#include <shared_mutex> // for std::shared_lock
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#include "librbd/object_map/InvalidateRequest.h"
#include "cls/lock/cls_lock_client.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::object_map::SnapshotRemoveRequest: " \
#include "librbd/ObjectMap.h"
#include "librbd/object_map/InvalidateRequest.h"
#include "cls/lock/cls_lock_client.h"
+
#include <iostream>
+#include <shared_mutex> // for std::shared_lock
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#include "librbd/ObjectMap.h"
#include "librbd/Utils.h"
#include "cls/lock/cls_lock_client.h"
+
+#include <shared_mutex> // for std::shared_lock
#include <string>
#define dout_subsys ceph_subsys_rbd
#include <boost/lambda/bind.hpp>
#include <boost/lambda/construct.hpp>
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::operation::FlattenRequest: " << this \
#include <boost/lambda/bind.hpp>
#include <boost/lambda/construct.hpp>
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::MigrateRequest: " << this << " " \
#include <boost/lambda/bind.hpp>
#include <boost/lambda/construct.hpp>
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::ObjectMapIterateRequest: "
#include <boost/lambda/bind.hpp>
#include <boost/lambda/construct.hpp>
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::RebuildObjectMapRequest: "
#include "librbd/internal.h"
#include "librbd/Utils.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::operation::RenameRequest: "
#include "librbd/ImageCtx.h"
#include "librbd/asio/ContextWQ.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::Request: "
#include "common/dout.h"
#include "common/errno.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::operation::ResizeRequest: " << this \
#include "librbd/io/ImageDispatcherInterface.h"
#include "librbd/mirror/snapshot/SetImageStateRequest.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::SnapshotCreateRequest: "
#include "common/errno.h"
#include "librbd/ImageCtx.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::SnapshotLimitRequest: "
#include "common/errno.h"
#include "librbd/ImageCtx.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::SnapshotProtectRequest: "
#include "librbd/image/DetachChildRequest.h"
#include "librbd/mirror/snapshot/RemoveImageStateRequest.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::SnapshotRemoveRequest: " << this << " " \
#include "common/errno.h"
#include "librbd/ImageCtx.h"
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::SnapshotRenameRequest: "
#include <boost/lambda/bind.hpp>
#include <boost/lambda/construct.hpp>
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::SnapshotRollbackRequest: "
#include "librbd/Utils.h"
#include <list>
#include <set>
+#include <shared_mutex> // for std::shared_lock
#include <vector>
#include <boost/lambda/bind.hpp>
#include <boost/lambda/construct.hpp>
#include <boost/lambda/bind.hpp>
#include <boost/lambda/construct.hpp>
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
namespace librbd {
#include <boost/lambda/construct.hpp>
#include <boost/scope_exit.hpp>
+#include <shared_mutex> // for std::shared_lock
+
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
#define dout_prefix *_dout << "librbd::TrimRequest: "
#include "include/buffer_fwd.h"
#include "include/encoding.h"
+#include <iosfwd>
+#include <map>
+#include <vector>
+
namespace ceph { class Formatter; }
namespace librbd {