Lines Matching refs:backoff

1756  * ceph_pg_mapping.  Used to track OSD backoffs -- a backoff [range] is
1930 struct ceph_osd_backoff *backoff;
1932 backoff = kzalloc(sizeof(*backoff), GFP_NOIO);
1933 if (!backoff)
1936 RB_CLEAR_NODE(&backoff->spg_node);
1937 RB_CLEAR_NODE(&backoff->id_node);
1938 return backoff;
1941 static void free_backoff(struct ceph_osd_backoff *backoff)
1943 WARN_ON(!RB_EMPTY_NODE(&backoff->spg_node));
1944 WARN_ON(!RB_EMPTY_NODE(&backoff->id_node));
1946 free_hoid(backoff->begin);
1947 free_hoid(backoff->end);
1948 kfree(backoff);
1954 DEFINE_RB_INSDEL_FUNCS2(backoff, struct ceph_osd_backoff, begin, hoid_compare,
1984 * Each backoff has a unique id within its OSD session.
1996 struct ceph_osd_backoff *backoff =
2000 erase_backoff(&spg->backoffs, backoff);
2001 erase_backoff_by_id(&osd->o_backoffs_by_id, backoff);
2002 free_backoff(backoff);
2037 struct ceph_osd_backoff *backoff;
2045 backoff = lookup_containing_backoff(&spg->backoffs, &hoid);
2046 if (!backoff)
2049 dout("%s req %p tid %llu backoff osd%d spgid %llu.%xs%d id %llu\n",
2050 __func__, req, req->r_tid, osd->o_osd, backoff->spgid.pgid.pool,
2051 backoff->spgid.pgid.seed, backoff->spgid.shard, backoff->id);
2340 /* backoff? */
4375 const struct ceph_osd_backoff *backoff,
4386 hoid_encoding_size(backoff->begin);
4388 hoid_encoding_size(backoff->end);
4397 encode_spgid(&p, &backoff->spgid);
4400 ceph_encode_64(&p, backoff->id);
4401 encode_hoid(&p, end, backoff->begin);
4402 encode_hoid(&p, end, backoff->end);
4415 struct ceph_osd_backoff *backoff;
4432 backoff = alloc_backoff();
4433 if (!backoff) {
4434 pr_err("%s failed to allocate backoff\n", __func__);
4437 backoff->spgid = m->spgid; /* struct */
4438 backoff->id = m->id;
4439 backoff->begin = m->begin;
4440 m->begin = NULL; /* backoff now owns this */
4441 backoff->end = m->end;
4444 insert_backoff(&spg->backoffs, backoff);
4445 insert_backoff_by_id(&osd->o_backoffs_by_id, backoff);
4448 * Ack with original backoff's epoch so that the OSD can
4451 msg = create_backoff_message(backoff, m->map_epoch);
4475 struct ceph_osd_backoff *backoff;
4481 backoff = lookup_backoff_by_id(&osd->o_backoffs_by_id, m->id);
4482 if (!backoff) {
4483 pr_err("%s osd%d spgid %llu.%xs%d id %llu backoff dne\n",
4489 if (hoid_compare(backoff->begin, m->begin) &&
4490 hoid_compare(backoff->end, m->end)) {
4497 spg = lookup_spg_mapping(&osd->o_backoff_mappings, &backoff->spgid);
4500 erase_backoff(&spg->backoffs, backoff);
4501 erase_backoff_by_id(&osd->o_backoffs_by_id, backoff);
4502 free_backoff(backoff);
4515 * Match against @m, not @backoff -- the PG may
4520 * If no other installed backoff applies,