Lines Matching refs:backoff
1676 * ceph_pg_mapping. Used to track OSD backoffs -- a backoff [range] is
1850 struct ceph_osd_backoff *backoff;
1852 backoff = kzalloc(sizeof(*backoff), GFP_NOIO);
1853 if (!backoff)
1856 RB_CLEAR_NODE(&backoff->spg_node);
1857 RB_CLEAR_NODE(&backoff->id_node);
1858 return backoff;
1861 static void free_backoff(struct ceph_osd_backoff *backoff)
1863 WARN_ON(!RB_EMPTY_NODE(&backoff->spg_node));
1864 WARN_ON(!RB_EMPTY_NODE(&backoff->id_node));
1866 free_hoid(backoff->begin);
1867 free_hoid(backoff->end);
1868 kfree(backoff);
1874 DEFINE_RB_INSDEL_FUNCS2(backoff, struct ceph_osd_backoff, begin, hoid_compare,
1904 * Each backoff has a unique id within its OSD session.
1916 struct ceph_osd_backoff *backoff =
1920 erase_backoff(&spg->backoffs, backoff);
1921 erase_backoff_by_id(&osd->o_backoffs_by_id, backoff);
1922 free_backoff(backoff);
1957 struct ceph_osd_backoff *backoff;
1965 backoff = lookup_containing_backoff(&spg->backoffs, &hoid);
1966 if (!backoff)
1969 dout("%s req %p tid %llu backoff osd%d spgid %llu.%xs%d id %llu\n",
1970 __func__, req, req->r_tid, osd->o_osd, backoff->spgid.pgid.pool,
1971 backoff->spgid.pgid.seed, backoff->spgid.shard, backoff->id);
2259 /* backoff? */
4285 const struct ceph_osd_backoff *backoff,
4296 hoid_encoding_size(backoff->begin);
4298 hoid_encoding_size(backoff->end);
4307 encode_spgid(&p, &backoff->spgid);
4310 ceph_encode_64(&p, backoff->id);
4311 encode_hoid(&p, end, backoff->begin);
4312 encode_hoid(&p, end, backoff->end);
4325 struct ceph_osd_backoff *backoff;
4342 backoff = alloc_backoff();
4343 if (!backoff) {
4344 pr_err("%s failed to allocate backoff\n", __func__);
4347 backoff->spgid = m->spgid; /* struct */
4348 backoff->id = m->id;
4349 backoff->begin = m->begin;
4350 m->begin = NULL; /* backoff now owns this */
4351 backoff->end = m->end;
4354 insert_backoff(&spg->backoffs, backoff);
4355 insert_backoff_by_id(&osd->o_backoffs_by_id, backoff);
4358 * Ack with original backoff's epoch so that the OSD can
4361 msg = create_backoff_message(backoff, m->map_epoch);
4385 struct ceph_osd_backoff *backoff;
4391 backoff = lookup_backoff_by_id(&osd->o_backoffs_by_id, m->id);
4392 if (!backoff) {
4393 pr_err("%s osd%d spgid %llu.%xs%d id %llu backoff dne\n",
4399 if (hoid_compare(backoff->begin, m->begin) &&
4400 hoid_compare(backoff->end, m->end)) {
4407 spg = lookup_spg_mapping(&osd->o_backoff_mappings, &backoff->spgid);
4410 erase_backoff(&spg->backoffs, backoff);
4411 erase_backoff_by_id(&osd->o_backoffs_by_id, backoff);
4412 free_backoff(backoff);
4425 * Match against @m, not @backoff -- the PG may
4430 * If no other installed backoff applies,