Motr  M0
plugin_dock.c File Reference
#include "lib/trace.h"
#include "motr/magic.h"
#include "rpc/rpc.h"
#include "rpc/rpclib.h"
#include "lib/arith.h"
#include "lib/misc.h"
#include "lib/errno.h"
#include "lib/memory.h"
#include "lib/finject.h"
#include "net/lnet/lnet.h"
#include "fop/fop.h"
#include "fop/fop_item_type.h"
#include "fop/fom_generic.h"
#include "rpc/rpc_opcodes.h"
#include "fdmi/fdmi.h"
#include "fdmi/plugin_dock.h"
#include "fdmi/plugin_dock_internal.h"
#include "fdmi/fops.h"
#include "fdmi/fops_xc.h"
#include "rpc/conn_pool.h"
#include "fdmi/module.h"
Include dependency graph for plugin_dock.c:

Go to the source code of this file.

Macros

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_FDMI
 

Functions

 M0_TL_DESCR_DEFINE (fdmi_filters, "filter regs list", static, struct m0_fdmi_filter_reg, ffr_link, ffr_magic, M0_FDMI_FLTR_MAGIC, M0_FDMI_FLTR_HEAD_MAGIC)
 
 M0_TL_DEFINE (fdmi_filters, static, struct m0_fdmi_filter_reg)
 
 M0_TL_DESCR_DEFINE (fdmi_recs, "fdmi record regs list", static, struct m0_fdmi_record_reg, frr_link, frr_magic, M0_FDMI_RCRD_MAGIC, M0_FDMI_RCRD_HEAD_MAGIC)
 
 M0_TL_DEFINE (fdmi_recs, static, struct m0_fdmi_record_reg)
 
M0_INTERNAL struct m0_rpc_conn_poolut_pdock_conn_pool (void)
 
static void pdock_record_release (struct m0_ref *ref)
 
static int pdock_client_post (struct m0_fop *fop, struct m0_rpc_session *session, const struct m0_rpc_item_ops *ri_ops)
 
struct m0_rpc_machinem0_fdmi__pdock_conn_pool_rpc_machine ()
 
static void test_print_fdmi_rec_list (void)
 
struct m0_fdmi_filter_regm0_fdmi__pdock_filter_reg_find (const struct m0_fid *fid)
 
struct m0_fdmi_record_regm0_fdmi__pdock_record_reg_find (const struct m0_uint128 *rid)
 
static int register_filter (const struct m0_fid *fid, const struct m0_fdmi_filter_desc *desc, const struct m0_fdmi_plugin_ops *pcb)
 
static void enable_filters (bool enable, struct m0_fid *filter_ids, uint32_t filter_count)
 
static void pdock_record_reg_cleanup (struct m0_rpc_item *item, bool replied)
 
static void release_replied (struct m0_rpc_item *item)
 
static void release_fdmi_rec (struct m0_uint128 *rec_id, struct m0_fid *filter_id M0_UNUSED)
 
M0_INTERNAL struct m0_fdmi_record_regm0_fdmi__pdock_fdmi_record_register (struct m0_fop *fop)
 
static void deregister_plugin (struct m0_fid *filter_ids, uint64_t filter_count)
 
const struct m0_fdmi_pd_opsm0_fdmi_plugin_dock_api_get (void)
 
M0_INTERNAL int m0_fdmi__plugin_dock_init (void)
 
M0_INTERNAL int m0_fdmi__plugin_dock_start (struct m0_reqh *reqh)
 
M0_INTERNAL void m0_fdmi__plugin_dock_stop ()
 
M0_INTERNAL void m0_fdmi__plugin_dock_fini (void)
 

Variables

struct m0_fop_type m0_pdock_fdmi_filters_enable_fopt
 
struct m0_fop_type m0_pdock_fdmi_filters_enable_rep_fopt
 
struct m0_rpc_item_ops release_ri_ops
 
const struct m0_fdmi_pd_ops fdmi_pdo
 

Macro Definition Documentation

◆ M0_TRACE_SUBSYSTEM

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_FDMI

Definition at line 23 of file plugin_dock.c.

Function Documentation

◆ deregister_plugin()

static void deregister_plugin ( struct m0_fid filter_ids,
uint64_t  filter_count 
)
static

Private pdock API. Plugin calls it via m0_fdmi_pd_ops::fpo_deregister_plugin() when does not need in feeding FDMI records anymore.

Definition at line 519 of file plugin_dock.c.

Here is the call graph for this function:

◆ enable_filters()

static void enable_filters ( bool  enable,
struct m0_fid filter_ids,
uint32_t  filter_count 
)
static

Private pdock API. Plugin calls it via m0_fdmi_pd_ops::fpo_enable_filters() when in need to control state of particular filter(s).

Todo:
Phase 2: implement posting filter descriptions to filterd

Definition at line 230 of file plugin_dock.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ M0_TL_DEFINE() [1/2]

M0_TL_DEFINE ( fdmi_filters  ,
static  ,
struct m0_fdmi_filter_reg   
)

◆ M0_TL_DEFINE() [2/2]

M0_TL_DEFINE ( fdmi_recs  ,
static  ,
struct m0_fdmi_record_reg   
)

◆ M0_TL_DESCR_DEFINE() [1/2]

M0_TL_DESCR_DEFINE ( fdmi_filters  ,
"filter regs list ,
static  ,
struct m0_fdmi_filter_reg  ,
ffr_link  ,
ffr_magic  ,
M0_FDMI_FLTR_MAGIC  ,
M0_FDMI_FLTR_HEAD_MAGIC   
)

◆ M0_TL_DESCR_DEFINE() [2/2]

M0_TL_DESCR_DEFINE ( fdmi_recs  ,
"fdmi record regs list ,
static  ,
struct m0_fdmi_record_reg  ,
frr_link  ,
frr_magic  ,
M0_FDMI_RCRD_MAGIC  ,
M0_FDMI_RCRD_HEAD_MAGIC   
)

◆ pdock_client_post()

static int pdock_client_post ( struct m0_fop fop,
struct m0_rpc_session session,
const struct m0_rpc_item_ops ri_ops 
)
static

Definition at line 662 of file plugin_dock.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pdock_record_reg_cleanup()

static void pdock_record_reg_cleanup ( struct m0_rpc_item item,
bool  replied 
)
static

Definition at line 263 of file plugin_dock.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pdock_record_release()

static void pdock_record_release ( struct m0_ref ref)
static

Called when fdmi record refc just got to zero

Definition at line 420 of file plugin_dock.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ register_filter()

static int register_filter ( const struct m0_fid fid,
const struct m0_fdmi_filter_desc desc,
const struct m0_fdmi_plugin_ops pcb 
)
static

Private pdock API. Plugin calls it via m0_fdmi_pd_ops::fpo_register_filter() when registers new filter description along with id and callback.

Definition at line 159 of file plugin_dock.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ release_fdmi_rec()

static void release_fdmi_rec ( struct m0_uint128 rec_id,
struct m0_fid *filter_id  M0_UNUSED 
)
static

Private pdock API. Plugin calls it via m0_fdmi_pd_ops::fpo_release_fdmi_rec() when done with FDMI record.

Definition at line 330 of file plugin_dock.c.

Here is the call graph for this function:

◆ release_replied()

static void release_replied ( struct m0_rpc_item item)
static

Definition at line 312 of file plugin_dock.c.

Here is the call graph for this function:

◆ test_print_fdmi_rec_list()

static void test_print_fdmi_rec_list ( void  )
static

Definition at line 103 of file plugin_dock.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ut_pdock_conn_pool()

M0_INTERNAL struct m0_rpc_conn_pool* ut_pdock_conn_pool ( void  )

Definition at line 57 of file plugin_dock.c.

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ fdmi_pdo

const struct m0_fdmi_pd_ops fdmi_pdo
Initial value:
= {
.fpo_register_filter = register_filter,
.fpo_enable_filters = enable_filters,
.fpo_release_fdmi_rec = release_fdmi_rec,
.fpo_deregister_plugin = deregister_plugin
}
static void deregister_plugin(struct m0_fid *filter_ids, uint64_t filter_count)
Definition: plugin_dock.c:519
static void enable_filters(bool enable, struct m0_fid *filter_ids, uint32_t filter_count)
Definition: plugin_dock.c:230
static void release_fdmi_rec(struct m0_uint128 *rec_id, struct m0_fid *filter_id M0_UNUSED)
Definition: plugin_dock.c:330
static int register_filter(const struct m0_fid *fid, const struct m0_fdmi_filter_desc *desc, const struct m0_fdmi_plugin_ops *pcb)
Definition: plugin_dock.c:159

Definition at line 556 of file plugin_dock.c.

◆ m0_pdock_fdmi_filters_enable_fopt

struct m0_fop_type m0_pdock_fdmi_filters_enable_fopt

Definition at line 63 of file plugin_dock.c.

◆ m0_pdock_fdmi_filters_enable_rep_fopt

struct m0_fop_type m0_pdock_fdmi_filters_enable_rep_fopt

Definition at line 64 of file plugin_dock.c.

◆ release_ri_ops

struct m0_rpc_item_ops release_ri_ops
Initial value:
= {
.rio_replied = release_replied
}
static void release_replied(struct m0_rpc_item *item)
Definition: plugin_dock.c:312

Definition at line 321 of file plugin_dock.c.