* osd_client_op_priority/osd_recovery_op_priority determines the ratio of
* available io between client and recovery. Each option may be set between
* 1..63.
+ *
+ * osd_recovery_op_warn_multiple scales the normal warning threshhold,
+ * osd_op_complaint_time, so that slow recovery ops won't cause noise
*/
-OPTION(osd_client_op_priority, OPT_INT, 63)
-OPTION(osd_recovery_op_priority, OPT_INT, 10)
+OPTION(osd_client_op_priority, OPT_U32, 63)
+OPTION(osd_recovery_op_priority, OPT_U32, 10)
+OPTION(osd_recovery_op_warn_multiple, OPT_U32, 16)
// Max time to wait between notifying mon of shutdown and shutting down
OPTION(osd_mon_shutdown_timeout, OPT_DOUBLE, 5)
return *_dout << "--OSD::tracker-- ";
}
+OpRequest::OpRequest(Message *req, OpTracker *tracker) :
+ request(req), xitem(this),
+ rmw_flags(0),
+ warn_interval_multiplier(1),
+ lock("OpRequest::lock"),
+ tracker(tracker),
+ hit_flag_points(0), latest_flag_point(0),
+ seq(0) {
+ received_time = request->get_recv_stamp();
+ tracker->register_inflight_op(&xitem);
+ if (req->get_priority() < g_conf->osd_client_op_priority) {
+ // don't warn as quickly for low priority ops
+ warn_interval_multiplier = g_conf->osd_recovery_op_warn_multiple;
+ }
+}
+
void OpHistory::on_shutdown()
{
arrived.clear();
static const uint8_t flag_sub_op_sent = 1 << 4;
static const uint8_t flag_commit_sent = 1 << 5;
- OpRequest(Message *req, OpTracker *tracker) :
- request(req), xitem(this),
- rmw_flags(0),
- warn_interval_multiplier(1),
- lock("OpRequest::lock"),
- tracker(tracker),
- hit_flag_points(0), latest_flag_point(0),
- seq(0) {
- received_time = request->get_recv_stamp();
- tracker->register_inflight_op(&xitem);
- }
+ OpRequest(Message *req, OpTracker *tracker);
public:
~OpRequest() {
assert(request);