closures: closure_get_not_zero(), closure_return_sync()
authorKent Overstreet <kent.overstreet@linux.dev>
Sun, 23 Jun 2024 01:38:58 +0000 (21:38 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 23 Jun 2024 04:57:21 +0000 (00:57 -0400)
commit06efa5f30c28eaf237247ca8c4cb46eb62cb6bd9
tree5441281fa1f247b064c9bf33b3dffd56ab59d262
parent18e92841e87bc548fcb91530115a66e72eecb10c
closures: closure_get_not_zero(), closure_return_sync()

Provide new primitives for solving a lifetime issue with bcachefs
btree_trans objects.

closure_sync_return(): like closure_sync(), wait synchronously for any
outstanding gets. like closure_return, the closure is considered
"finished" and the ref left at 0.

closure_get_not_zero(): get a ref on a closure if it's alive, i.e. the
ref is not zero.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
include/linux/closure.h
lib/closure.c