Motr  M0
source_dock_internal.h
Go to the documentation of this file.
1 /* -*- C -*- */
2 /*
3  * Copyright (c) 2017-2020 Seagate Technology LLC and/or its Affiliates
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * For any questions about this software or licensing,
18  * please email opensource@seagate.com or cortx-questions@seagate.com.
19  *
20  */
21 
22 
23 #pragma once
24 
25 #ifndef __MOTR_FDMI_SOURCE_DOCK_INTERNAL_H__
26 #define __MOTR_FDMI_SOURCE_DOCK_INTERNAL_H__
27 
28 #include "lib/types.h"
29 
30 #include "fdmi/fdmi.h"
31 #include "fdmi/source_dock.h"
32 #include "fdmi/filterc.h"
33 #include "fdmi/flt_eval.h"
34 #include "rpc/conn_pool.h"
35 
36 /* This file describes FDMI source dock internals */
37 
48  uint64_t fsc_magic;
49 
52 
55 
59 };
60 
61 M0_TL_DESCR_DECLARE(fdmi_record_list, M0_EXTERN);
62 M0_TL_DECLARE(fdmi_record_list, M0_EXTERN, struct m0_fdmi_src_rec);
63 
64 M0_TL_DESCR_DECLARE(fdmi_matched_filter_list, M0_EXTERN);
65 M0_TL_DECLARE(fdmi_matched_filter_list, M0_EXTERN, struct m0_conf_fdmi_filter);
66 
68 struct fdmi_sd_fom {
69  uint64_t fsf_magic;
70  struct m0_fom fsf_fom;
83 };
84 
86 struct fdmi_rr_fom {
87  uint64_t frf_magic;
88  struct m0_fom frf_fom;
89 };
90 
93  struct m0_fom fstf_fom;
97 };
98 
103 
106 
112 
120 
123 
126 
130 
133 
136 };
137 
149  int (*ffth_handler)
151  struct m0_conf_fdmi_filter *filter,
152  struct m0_fdmi_eval_var_info *var_info);
153 };
154 
155 M0_INTERNAL void m0_fdmi__enqueue(struct m0_fdmi_src_rec *src_rec);
156 M0_INTERNAL void m0_fdmi__enqueue_locked(struct m0_fdmi_src_rec *src_rec);
157 
159 M0_INTERNAL void m0_fdmi__record_post(struct m0_fdmi_src_rec *src_rec);
160 
164 M0_INTERNAL void m0_fdmi__rec_id_gen(struct m0_fdmi_src_rec *src_rec);
165 
167 M0_INTERNAL void m0_fdmi__src_dock_fom_init(void);
168 
170 M0_INTERNAL int m0_fdmi__src_dock_fom_start(
171  struct m0_fdmi_src_dock *src_dock,
172  const struct m0_filterc_ops *filterc_ops,
173  struct m0_reqh *reqh);
174 
176 M0_INTERNAL void
178 
180 M0_INTERNAL struct m0_fdmi_src_ctx *m0_fdmi__src_ctx_get(
181  enum m0_fdmi_rec_type_id src_type_id);
182 
186 M0_INTERNAL void m0_fdmi__fs_get(struct m0_fdmi_src_rec *src_rec);
187 
191 M0_INTERNAL void m0_fdmi__fs_put(struct m0_fdmi_src_rec *src_rec);
192 
194 M0_INTERNAL void m0_fdmi__fs_begin(struct m0_fdmi_src_rec *src_rec);
195 
197 M0_INTERNAL void m0_fdmi__fs_end(struct m0_fdmi_src_rec *src_rec);
198 
200 M0_INTERNAL void m0_fdmi__record_init(struct m0_fdmi_src_rec *src_rec);
201 
203 M0_INTERNAL void m0_fdmi__record_deinit(struct m0_fdmi_src_rec *src_rec);
204 
206 M0_INTERNAL enum m0_fdmi_rec_type_id
208 
210 M0_INTERNAL int m0_fdmi__handle_release(struct m0_uint128 *fdmi_rec_id);
211 
213 M0_INTERNAL void m0_fdmi__src_dock_fom_wakeup(struct fdmi_sd_fom *sd_fom);
214 
217 #endif /* __MOTR_FDMI_SOURCE_DOCK_INTERNAL_H__ */
218 
219 /*
220  * Local variables:
221  * c-indentation-style: "K&R"
222  * c-basic-offset: 8
223  * tab-width: 8
224  * fill-column: 80
225  * scroll-step: 1
226  * End:
227  */
228 /*
229  * vim: tabstop=8 shiftwidth=8 noexpandtab textwidth=80 nowrap
230  */
M0_INTERNAL void m0_fdmi__src_dock_fom_stop(struct m0_fdmi_src_dock *src_dock)
M0_INTERNAL void m0_fdmi__record_post(struct m0_fdmi_src_rec *src_rec)
Definition: source_dock.c:261
M0_INTERNAL int m0_fdmi__handle_release(struct m0_uint128 *fdmi_rec_id)
Definition: source_dock.c:445
struct fdmi_sd_fom fsdc_sd_fom
struct m0_mutex fsdc_list_mutex
struct m0_tl fsdc_src_list
uint64_t m0_time_t
Definition: time.h:37
struct m0_sm_ast fstf_wakeup_ast
int(* ffth_handler)(struct m0_fdmi_eval_ctx *ctx, struct m0_conf_fdmi_filter *filter, struct m0_fdmi_eval_var_info *var_info)
m0_fdmi_filter_type_id
Definition: filter.h:76
m0_time_t fsf_last_checkpoint
M0_INTERNAL void m0_fdmi__record_init(struct m0_fdmi_src_rec *src_rec)
Definition: source_dock.c:155
struct m0_fom fsf_fom
Definition: sm.h:504
struct m0_semaphore fsf_shutdown
struct m0_filterc_ctx fsf_filter_ctx
M0_INTERNAL void m0_fdmi__fs_get(struct m0_fdmi_src_rec *src_rec)
Definition: source_dock.c:388
M0_INTERNAL void m0_fdmi__src_dock_fom_init(void)
struct fdmi_sd_timer_fom fsdc_sd_timer_fom
struct m0_filterc_iter fsf_filter_iter
struct m0_tlink fsc_linkage
M0_INTERNAL void m0_fdmi__enqueue(struct m0_fdmi_src_rec *src_rec)
Definition: source_dock.c:250
struct m0_sm_ast fsf_wakeup_ast
Definition: tlist.h:251
M0_INTERNAL void m0_fdmi__fs_end(struct m0_fdmi_src_rec *src_rec)
Definition: source_dock.c:427
struct m0_semaphore fstf_shutdown
M0_INTERNAL void m0_fdmi__fs_begin(struct m0_fdmi_src_rec *src_rec)
Definition: source_dock.c:415
Definition: reqh.h:94
M0_INTERNAL void m0_fdmi__src_dock_fom_wakeup(struct fdmi_sd_fom *sd_fom)
m0_fdmi_rec_type_id
Definition: fdmi.h:234
M0_INTERNAL void m0_fdmi__rec_id_gen(struct m0_fdmi_src_rec *src_rec)
Definition: source_dock.c:186
static struct fdmi_ctx ctx
Definition: main.c:80
struct m0_mutex fsf_pending_fops_lock
M0_INTERNAL enum m0_fdmi_rec_type_id m0_fdmi__sd_rec_type_id_get(struct m0_fdmi_src_rec *src_rec)
Definition: source_dock.c:439
struct m0_tl fsdc_posted_rec_list
struct m0_tl fsdc_rec_inflight
Definition: fom.h:481
struct m0_reqh reqh
Definition: rm_foms.c:48
struct m0_rpc_conn_pool fsf_conn_pool
struct m0_fdmi_eval_ctx fsf_flt_eval
M0_TL_DECLARE(fdmi_record_list, M0_EXTERN, struct m0_fdmi_src_rec)
struct m0_fom frf_fom
struct m0_tl fsf_pending_fops
struct m0_fom_timeout fstf_timeout
M0_TL_DESCR_DECLARE(fdmi_record_list, M0_EXTERN)
struct m0_fdmi_src fsc_src
M0_INTERNAL void m0_fdmi__record_deinit(struct m0_fdmi_src_rec *src_rec)
Definition: source_dock.c:174
def filter(argv)
Definition: filter.py:27
M0_INTERNAL struct m0_fdmi_src_ctx * m0_fdmi__src_ctx_get(enum m0_fdmi_rec_type_id src_type_id)
Definition: source_dock.c:374
Definition: mutex.h:47
M0_INTERNAL void m0_fdmi__fs_put(struct m0_fdmi_src_rec *src_rec)
Definition: source_dock.c:402
enum m0_fdmi_filter_type_id ffth_id
M0_INTERNAL void m0_fdmi__enqueue_locked(struct m0_fdmi_src_rec *src_rec)
Definition: source_dock.c:236
M0_INTERNAL int m0_fdmi__src_dock_fom_start(struct m0_fdmi_src_dock *src_dock, const struct m0_filterc_ops *filterc_ops, struct m0_reqh *reqh)