23 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_FDMI 38 fsc_linkage, fsc_magic,
135 M0_PRE(!fdmi_record_list_tlink_is_in(src_rec));
160 fdmi_record_list_tlink_init(src_rec);
180 fdmi_record_list_tlink_fini(src_rec);
226 M0_ASSERT(
sizeof(src_rec) <=
sizeof(uint64_t));
232 U128_P(&src_rec->fsr_rec_id));
245 fdmi_record_list_tlist_add_tail(
264 (src_rec ? src_rec->
fsr_src : (
void*)(-1)),
265 (src_rec ? src_rec->
fsr_data : (
void*)(-1)),
291 if (src_ctx ==
NULL) {
307 fdmi_src_dock_src_list_tlist_remove(src_ctx);
328 fdmi_src_dock_src_list_tlink_init_at(
349 fdmi_src_dock_src_list, src_ctx,
363 fdmi_record_list_tlist_remove(src_rec);
379 M0_ENTRY(
"src_dock=%p, src_type_id=%d", src_dock, src_type_id);
461 actual = fdmi_rec_id->
u_hi;
465 "Failed rc=1. Received release-record aimed at " 466 "another source dock instance: u_hi = %" PRIx64 ", " 479 src_rec = (
void *)fdmi_rec_id->
u_lo;
490 "Attempt to release non-existent FDMI record with ID " 502 if ((waiting = fdmi_record_inflight_tlink_is_in(src_rec)))
503 fdmi_record_inflight_tlist_remove(src_rec);
516 #undef M0_TRACE_SUBSYSTEM
M0_INTERNAL void m0_mutex_unlock(struct m0_mutex *mutex)
M0_INTERNAL void m0_fdmi__record_post(struct m0_fdmi_src_rec *src_rec)
struct m0_tl fsr_filter_list
M0_INTERNAL int m0_fdmi__handle_release(struct m0_uint128 *fdmi_rec_id)
struct fdmi_sd_fom fsdc_sd_fom
struct m0_mutex fsdc_list_mutex
struct m0_tl fsdc_src_list
void(* fs_get)(struct m0_fdmi_src_rec *src_rec)
#define M0_LOG(level,...)
struct m0_uint128 fsr_rec_id
M0_INTERNAL bool m0_fdmi__record_is_valid(struct m0_fdmi_src_rec *src_rec)
M0_INTERNAL void m0_fdmi__record_init(struct m0_fdmi_src_rec *src_rec)
static void src_rec_free(struct m0_ref *ref)
M0_INTERNAL void m0_fdmi_source_free(struct m0_fdmi_src *src)
#define container_of(ptr, type, member)
M0_INTERNAL void m0_mutex_lock(struct m0_mutex *mutex)
M0_TL_DESCR_DEFINE(fdmi_src_dock_src_list, "fdmi src list", M0_INTERNAL, struct m0_fdmi_src_ctx, fsc_linkage, fsc_magic, M0_FDMI_SRC_DOCK_SRC_CTX_MAGIC, M0_FDMI_SRC_DOCK_SRC_CTX_HEAD_MAGIC)
void(* fs_put)(struct m0_fdmi_src_rec *src_rec)
M0_INTERNAL void m0_fdmi__fs_get(struct m0_fdmi_src_rec *src_rec)
#define U128_P_SAFE_EX(y, x)
struct m0_fdmi_src * fsr_src
M0_INTERNAL int m0_fdmi_source_alloc(enum m0_fdmi_rec_type_id type_id, struct m0_fdmi_src **src)
M0_INTERNAL void m0_ref_put(struct m0_ref *ref)
void m0_ref_init(struct m0_ref *ref, int init_num, void(*release)(struct m0_ref *ref))
#define M0_AMB(obj, ptr, field)
#define m0_tl_teardown(name, head, obj)
M0_INTERNAL void m0_fdmi__enqueue(struct m0_fdmi_src_rec *src_rec)
M0_INTERNAL bool m0_mutex_is_locked(const struct m0_mutex *mutex)
m0_time_t m0_time_now(void)
M0_INTERNAL void m0_fdmi_source_deregister(struct m0_fdmi_src *src)
M0_INTERNAL struct m0_fdmi_src_dock * m0_fdmi_src_dock_get(void)
M0_INTERNAL void m0_fdmi__fs_end(struct m0_fdmi_src_rec *src_rec)
M0_INTERNAL int m0_fdmi_source_register(struct m0_fdmi_src *src)
M0_INTERNAL void m0_mutex_init(struct m0_mutex *mutex)
M0_INTERNAL void m0_fdmi__fs_begin(struct m0_fdmi_src_rec *src_rec)
M0_INTERNAL void m0_fdmi__src_dock_fom_wakeup(struct fdmi_sd_fom *sd_fom)
M0_INTERNAL void m0_fdmi__rec_id_gen(struct m0_fdmi_src_rec *src_rec)
M0_INTERNAL enum m0_fdmi_rec_type_id m0_fdmi__sd_rec_type_id_get(struct m0_fdmi_src_rec *src_rec)
struct m0_tl fsdc_posted_rec_list
struct m0_tl fsdc_rec_inflight
enum m0_fdmi_rec_type_id fs_type_id
M0_INTERNAL int64_t m0_ref_read(const struct m0_ref *ref)
M0_INTERNAL uint64_t m0_rnd64(uint64_t *seed)
M0_TL_DEFINE(fdmi_src_dock_src_list, M0_INTERNAL, struct m0_fdmi_src_ctx)
#define M0_ALLOC_PTR(ptr)
M0_INTERNAL void m0_fdmi_source_dock_fini(struct m0_fdmi_src_dock *src_dock)
uint64_t fsdc_instance_id
M0_INTERNAL void m0_mutex_fini(struct m0_mutex *mutex)
struct m0_fdmi_src_ctx * fsr_src_ctx
void(* fs_begin)(struct m0_fdmi_src_rec *src_rec)
struct m0_fdmi_src fsc_src
M0_INTERNAL void m0_fdmi__record_deinit(struct m0_fdmi_src_rec *src_rec)
#define M0_UINT128(hi, lo)
#define m0_tlist_for(descr, head, obj)
M0_INTERNAL struct m0_fdmi_src_ctx * m0_fdmi__src_ctx_get(enum m0_fdmi_rec_type_id src_type_id)
void(* fs_end)(struct m0_fdmi_src_rec *src_rec)
#define m0_tl_find(name, var, head,...)
M0_INTERNAL void m0_fdmi__fs_put(struct m0_fdmi_src_rec *src_rec)
struct m0_pdclust_src_addr src
M0_INTERNAL void m0_fdmi_source_dock_init(struct m0_fdmi_src_dock *src_dock)
M0_INTERNAL void m0_fdmi__enqueue_locked(struct m0_fdmi_src_rec *src_rec)