{
opsvc.break_thread();
opsvc.join();
- std::lock_guard<Mutex> history_lock(ops_history_lock);
+ std::lock_guard history_lock(ops_history_lock);
arrived.clear();
duration.clear();
slow_op.clear();
void OpHistory::_insert_delayed(const utime_t& now, TrackedOpRef op)
{
- std::lock_guard<Mutex> history_lock(ops_history_lock);
+ std::lock_guard history_lock(ops_history_lock);
if (shutdown)
return;
double opduration = op->get_duration();
void OpHistory::dump_ops(utime_t now, Formatter *f, set<string> filters, bool by_duration)
{
- std::lock_guard<Mutex> history_lock(ops_history_lock);
+ std::lock_guard history_lock(ops_history_lock);
cleanup(now);
f->open_object_section("op_history");
f->dump_int("size", history_size);
}
struct ShardedTrackingData {
- Mutex ops_in_flight_lock_sharded;
+ ceph::mutex ops_in_flight_lock_sharded;
TrackedOp::tracked_op_list_t ops_in_flight_sharded;
- explicit ShardedTrackingData(string lock_name):
- ops_in_flight_lock_sharded(lock_name.c_str()) {}
+ explicit ShardedTrackingData(string lock_name)
+ : ops_in_flight_lock_sharded(ceph::make_mutex(lock_name)) {}
};
OpTracker::OpTracker(CephContext *cct_, bool tracking, uint32_t num_shards):
void OpHistory::dump_slow_ops(utime_t now, Formatter *f, set<string> filters)
{
- std::lock_guard<Mutex> history_lock(ops_history_lock);
+ std::lock_guard history_lock(ops_history_lock);
cleanup(now);
f->open_object_section("OpHistory slow ops");
f->dump_int("num to keep", history_slow_op_size);
for (uint32_t i = 0; i < num_optracker_shards; i++) {
ShardedTrackingData* sdata = sharded_in_flight_list[i];
ceph_assert(NULL != sdata);
- std::lock_guard<Mutex> locker(sdata->ops_in_flight_lock_sharded);
+ std::lock_guard locker(sdata->ops_in_flight_lock_sharded);
for (auto& op : sdata->ops_in_flight_sharded) {
if (print_only_blocked && (now - op.get_initiated() <= complaint_time))
break;
ShardedTrackingData* sdata = sharded_in_flight_list[shard_index];
ceph_assert(NULL != sdata);
{
- std::lock_guard<Mutex> locker(sdata->ops_in_flight_lock_sharded);
+ std::lock_guard locker(sdata->ops_in_flight_lock_sharded);
sdata->ops_in_flight_sharded.push_back(*i);
i->seq = current_seq;
}
ShardedTrackingData* sdata = sharded_in_flight_list[shard_index];
ceph_assert(NULL != sdata);
{
- std::lock_guard<Mutex> locker(sdata->ops_in_flight_lock_sharded);
+ std::lock_guard locker(sdata->ops_in_flight_lock_sharded);
auto p = sdata->ops_in_flight_sharded.iterator_to(*i);
sdata->ops_in_flight_sharded.erase(p);
}
RWLock::RLocker l(lock);
for (const auto sdata : sharded_in_flight_list) {
ceph_assert(sdata);
- std::lock_guard<Mutex> locker(sdata->ops_in_flight_lock_sharded);
+ std::lock_guard locker(sdata->ops_in_flight_lock_sharded);
if (!sdata->ops_in_flight_sharded.empty()) {
utime_t oldest_op_tmp =
sdata->ops_in_flight_sharded.front().get_initiated();
for (uint32_t iter = 0; iter < num_optracker_shards; iter++) {
ShardedTrackingData* sdata = sharded_in_flight_list[iter];
ceph_assert(NULL != sdata);
- std::lock_guard<Mutex> locker(sdata->ops_in_flight_lock_sharded);
+ std::lock_guard locker(sdata->ops_in_flight_lock_sharded);
for (auto& op : sdata->ops_in_flight_sharded) {
if (!visit(op))
break;
for (uint32_t iter = 0; iter < num_optracker_shards; iter++) {
ShardedTrackingData* sdata = sharded_in_flight_list[iter];
ceph_assert(NULL != sdata);
- std::lock_guard<Mutex> locker(sdata->ops_in_flight_lock_sharded);
+ std::lock_guard locker(sdata->ops_in_flight_lock_sharded);
for (auto& i : sdata->ops_in_flight_sharded) {
utime_t age = now - i.get_initiated();
return;
{
- std::lock_guard<Mutex> l(lock);
+ std::lock_guard l(lock);
events.emplace_back(stamp, event);
current = events.back().c_str();
}
return;
{
- std::lock_guard<Mutex> l(lock);
+ std::lock_guard l(lock);
events.emplace_back(stamp, event);
current = event;
}
#include "common/histogram.h"
#include "common/RWLock.h"
#include "common/Thread.h"
+#include "common/Clock.h"
+#include "common/ceph_mutex.h"
#include "include/spinlock.h"
#include "msg/Message.h"
set<pair<utime_t, TrackedOpRef> > arrived;
set<pair<double, TrackedOpRef> > duration;
set<pair<utime_t, TrackedOpRef> > slow_op;
- Mutex ops_history_lock;
+ ceph::mutex ops_history_lock = ceph::make_mutex("OpHistory::ops_history_lock");
void cleanup(utime_t now);
uint32_t history_size;
uint32_t history_duration;
friend class OpHistoryServiceThread;
public:
- OpHistory() : ops_history_lock("OpHistory::Lock"),
- history_size(0), history_duration(0),
- history_slow_op_size(0), history_slow_op_threshold(0),
- shutdown(false), opsvc(this) {
+ OpHistory()
+ : history_size(0), history_duration(0),
+ history_slow_op_size(0), history_slow_op_threshold(0),
+ shutdown(false), opsvc(this) {
opsvc.create("OpHistorySvc");
}
~OpHistory() {
};
vector<Event> events; ///< list of events and their times
- mutable Mutex lock = {"TrackedOp::lock"}; ///< to protect the events list
+ mutable ceph::mutex lock = ceph::make_mutex("TrackedOp::lock"); ///< to protect the events list
const char *current = 0; ///< the current state the event is in
uint64_t seq = 0; ///< a unique value set by the OpTracker
const char *get_desc() const {
if (!desc || want_new_desc.load()) {
- std::lock_guard<Mutex> l(lock);
+ std::lock_guard l(lock);
_gen_desc();
}
return desc;
}
double get_duration() const {
- std::lock_guard<Mutex> l(lock);
+ std::lock_guard l(lock);
if (!events.empty() && events.rbegin()->compare("done") == 0)
return events.rbegin()->stamp - get_initiated();
else
}
virtual const char *state_string() const {
- std::lock_guard<Mutex> l(lock);
+ std::lock_guard l(lock);
return events.rbegin()->c_str();
}