Lines Matching full:backoff
1739 * ceph_pg_mapping. Used to track OSD backoffs -- a backoff [range] is
1913 struct ceph_osd_backoff *backoff; in alloc_backoff() local
1915 backoff = kzalloc_obj(*backoff, GFP_NOIO); in alloc_backoff()
1916 if (!backoff) in alloc_backoff()
1919 RB_CLEAR_NODE(&backoff->spg_node); in alloc_backoff()
1920 RB_CLEAR_NODE(&backoff->id_node); in alloc_backoff()
1921 return backoff; in alloc_backoff()
1924 static void free_backoff(struct ceph_osd_backoff *backoff) in free_backoff() argument
1926 WARN_ON(!RB_EMPTY_NODE(&backoff->spg_node)); in free_backoff()
1927 WARN_ON(!RB_EMPTY_NODE(&backoff->id_node)); in free_backoff()
1929 free_hoid(backoff->begin); in free_backoff()
1930 free_hoid(backoff->end); in free_backoff()
1931 kfree(backoff); in free_backoff()
1937 DEFINE_RB_INSDEL_FUNCS2(backoff, struct ceph_osd_backoff, begin, hoid_compare,
1967 * Each backoff has a unique id within its OSD session.
1979 struct ceph_osd_backoff *backoff = in DEFINE_RB_FUNCS() local
1983 erase_backoff(&spg->backoffs, backoff); in DEFINE_RB_FUNCS()
1984 erase_backoff_by_id(&osd->o_backoffs_by_id, backoff); in DEFINE_RB_FUNCS()
1985 free_backoff(backoff); in DEFINE_RB_FUNCS()
2020 struct ceph_osd_backoff *backoff; in should_plug_request() local
2028 backoff = lookup_containing_backoff(&spg->backoffs, &hoid); in should_plug_request()
2029 if (!backoff) in should_plug_request()
2032 dout("%s req %p tid %llu backoff osd%d spgid %llu.%xs%d id %llu\n", in should_plug_request()
2033 __func__, req, req->r_tid, osd->o_osd, backoff->spgid.pgid.pool, in should_plug_request()
2034 backoff->spgid.pgid.seed, backoff->spgid.shard, backoff->id); in should_plug_request()
2323 /* backoff? */ in send_request()
4361 const struct ceph_osd_backoff *backoff, in create_backoff_message() argument
4372 hoid_encoding_size(backoff->begin); in create_backoff_message()
4374 hoid_encoding_size(backoff->end); in create_backoff_message()
4383 encode_spgid(&p, &backoff->spgid); in create_backoff_message()
4386 ceph_encode_64(&p, backoff->id); in create_backoff_message()
4387 encode_hoid(&p, end, backoff->begin); in create_backoff_message()
4388 encode_hoid(&p, end, backoff->end); in create_backoff_message()
4401 struct ceph_osd_backoff *backoff; in handle_backoff_block() local
4418 backoff = alloc_backoff(); in handle_backoff_block()
4419 if (!backoff) { in handle_backoff_block()
4420 pr_err("%s failed to allocate backoff\n", __func__); in handle_backoff_block()
4423 backoff->spgid = m->spgid; /* struct */ in handle_backoff_block()
4424 backoff->id = m->id; in handle_backoff_block()
4425 backoff->begin = m->begin; in handle_backoff_block()
4426 m->begin = NULL; /* backoff now owns this */ in handle_backoff_block()
4427 backoff->end = m->end; in handle_backoff_block()
4430 insert_backoff(&spg->backoffs, backoff); in handle_backoff_block()
4431 insert_backoff_by_id(&osd->o_backoffs_by_id, backoff); in handle_backoff_block()
4434 * Ack with original backoff's epoch so that the OSD can in handle_backoff_block()
4437 msg = create_backoff_message(backoff, m->map_epoch); in handle_backoff_block()
4461 struct ceph_osd_backoff *backoff; in handle_backoff_unblock() local
4467 backoff = lookup_backoff_by_id(&osd->o_backoffs_by_id, m->id); in handle_backoff_unblock()
4468 if (!backoff) { in handle_backoff_unblock()
4469 pr_err("%s osd%d spgid %llu.%xs%d id %llu backoff dne\n", in handle_backoff_unblock()
4475 if (hoid_compare(backoff->begin, m->begin) && in handle_backoff_unblock()
4476 hoid_compare(backoff->end, m->end)) { in handle_backoff_unblock()
4483 spg = lookup_spg_mapping(&osd->o_backoff_mappings, &backoff->spgid); in handle_backoff_unblock()
4486 erase_backoff(&spg->backoffs, backoff); in handle_backoff_unblock()
4487 erase_backoff_by_id(&osd->o_backoffs_by_id, backoff); in handle_backoff_unblock()
4488 free_backoff(backoff); in handle_backoff_unblock()
4501 * Match against @m, not @backoff -- the PG may in handle_backoff_unblock()
4506 * If no other installed backoff applies, in handle_backoff_unblock()