Motr  M0
ag.h
Go to the documentation of this file.
1 /* -*- C -*- */
2 /*
3  * Copyright (c) 2012-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_SNS_CM_AG_H__
26 #define __MOTR_SNS_CM_AG_H__
27 
28 #include "layout/pdclust.h"
29 #include "cob/ns_iter.h"
30 
31 #include "cm/ag.h"
32 #include "sns/cm/cp.h"
33 #include "cm/proxy.h"
34 
42 struct m0_sns_cm;
43 
44 struct m0_sns_cm_ag {
47 
49 
51  uint32_t sag_fnr;
52 
58 
61 
67 
73 
75  uint32_t sag_outgoing_nr;
76 
79 
81  uint32_t sag_not_coming;
82 
85 };
86 
93  struct m0_sm ai_sm;
95  struct m0_fid ai_fid;
101  uint64_t ai_group_last;
104 
106 };
107 
108 M0_INTERNAL int m0_sns_cm_ag__next(struct m0_sns_cm *scm,
109  const struct m0_cm_ag_id *id_curr,
110  struct m0_cm_ag_id *id_next);
111 M0_INTERNAL int m0_sns_cm_ag_iter_init(struct m0_sns_cm_ag_iter *ai);
112 M0_INTERNAL void m0_sns_cm_ag_iter_fini(struct m0_sns_cm_ag_iter *ai);
113 
118 M0_INTERNAL int m0_sns_cm_ag_init(struct m0_sns_cm_ag *sag,
119  struct m0_cm *cm,
120  const struct m0_cm_ag_id *id,
121  const struct m0_cm_aggr_group_ops *ag_ops,
122  bool has_incoming);
123 
128 M0_INTERNAL void m0_sns_cm_ag_fini(struct m0_sns_cm_ag *sag);
129 
134 M0_INTERNAL uint64_t m0_sns_cm_ag_local_cp_nr(const struct m0_cm_aggr_group *ag);
135 M0_INTERNAL bool m0_sns_cm_ag_has_incoming_from(struct m0_cm_aggr_group *ag,
136  struct m0_cm_proxy *proxy);
137 
150 M0_INTERNAL bool m0_sns_cm_ag_is_frozen_on(struct m0_cm_aggr_group *ag,
151  struct m0_cm_proxy *pxy);
152 
153 M0_INTERNAL struct m0_sns_cm_ag *ag2snsag(const struct m0_cm_aggr_group *ag);
154 
155 M0_INTERNAL void agid2fid(const struct m0_cm_ag_id *id,
156  struct m0_fid *fid);
157 
158 M0_INTERNAL uint64_t agid2group(const struct m0_cm_ag_id *id);
159 
160 M0_INTERNAL void m0_sns_cm_ag_agid_setup(const struct m0_fid *gob_fid,
161  uint64_t group,
162  struct m0_cm_ag_id *agid);
163 
164 M0_INTERNAL struct m0_cm *snsag2cm(const struct m0_sns_cm_ag *sag);
165 
166 M0_INTERNAL bool m0_sns_cm_ag_has_data(struct m0_sns_cm_file_ctx *fctx,
167  uint64_t group);
168 
171 #endif /* __MOTR_SNS_CM_AG_H__ */
172 
173 /*
174  * Local variables:
175  * c-indentation-style: "K&R"
176  * c-basic-offset: 8
177  * tab-width: 8
178  * fill-column: 80
179  * scroll-step: 1
180  * End:
181  */
Definition: cm.h:205
uint32_t sag_not_coming
Definition: ag.h:81
static struct m0_fid gob_fid
Definition: net.c:115
M0_INTERNAL uint64_t m0_sns_cm_ag_local_cp_nr(const struct m0_cm_aggr_group *ag)
Definition: ag.c:420
M0_INTERNAL void agid2fid(const struct m0_cm_ag_id *id, struct m0_fid *fid)
Definition: ag.c:405
struct m0_bitmap sag_fmap
Definition: ag.h:84
M0_INTERNAL void m0_sns_cm_ag_agid_setup(const struct m0_fid *gob_fid, uint64_t group, struct m0_cm_ag_id *agid)
Definition: ag.c:396
static struct m0_sns_cm * scm
Definition: cm.c:64
M0_INTERNAL void m0_sns_cm_ag_fini(struct m0_sns_cm_ag *sag)
Definition: ag.c:443
uint32_t sag_fnr
Definition: ag.h:51
struct m0_fid fid
Definition: di.c:46
static struct m0_cm * cm
Definition: cm.c:63
M0_INTERNAL uint64_t agid2group(const struct m0_cm_ag_id *id)
Definition: ag.c:413
M0_INTERNAL void m0_sns_cm_ag_iter_fini(struct m0_sns_cm_ag_iter *ai)
Definition: ag.c:380
struct m0_fid ai_fid
Definition: ag.h:95
static struct m0_sns_cm_ag * sag
Definition: cm.c:66
struct m0_sns_cm_file_ctx * ai_fctx
Definition: ag.h:103
M0_INTERNAL bool m0_sns_cm_ag_is_frozen_on(struct m0_cm_aggr_group *ag, struct m0_cm_proxy *pxy)
Definition: ag.c:541
struct m0_cm_proxy_in_count sag_proxy_in_count
Definition: ag.h:57
uint32_t sag_outgoing_nr
Definition: ag.h:75
M0_INTERNAL bool m0_sns_cm_ag_has_incoming_from(struct m0_cm_aggr_group *ag, struct m0_cm_proxy *proxy)
Definition: ag.c:528
static void group(void)
Definition: sm.c:386
uint32_t sag_incoming_cp_nr
Definition: ag.h:72
M0_INTERNAL struct m0_cm * snsag2cm(const struct m0_sns_cm_ag *sag)
Definition: ag.c:386
struct m0_sns_cm_file_ctx * sag_fctx
Definition: ag.h:48
struct m0_sm ai_sm
Definition: ag.h:93
M0_INTERNAL int m0_sns_cm_ag_init(struct m0_sns_cm_ag *sag, struct m0_cm *cm, const struct m0_cm_ag_id *id, const struct m0_cm_aggr_group_ops *ag_ops, bool has_incoming)
Definition: ag.c:464
Definition: fid.h:38
uint32_t sag_local_tgts_nr
Definition: ag.h:78
M0_INTERNAL int m0_sns_cm_ag__next(struct m0_sns_cm *scm, const struct m0_cm_ag_id *id_curr, struct m0_cm_ag_id *id_next)
Definition: ag.c:320
Definition: cm.h:166
Definition: sm.h:301
uint64_t ai_group_last
Definition: ag.h:101
M0_INTERNAL bool m0_sns_cm_ag_has_data(struct m0_sns_cm_file_ctx *fctx, uint64_t group)
Definition: ag.c:577
uint32_t sag_incoming_units_nr
Definition: ag.h:66
uint32_t sag_cp_created_nr
Definition: ag.h:60
struct m0_poolmach * ai_pm
Definition: ag.h:105
static struct m0_sns_cm_file_ctx fctx
Definition: net.c:55
struct m0_cm_ag_id ai_id_next
Definition: ag.h:99
struct m0_cm_aggr_group sag_base
Definition: ag.h:46
M0_INTERNAL struct m0_sns_cm_ag * ag2snsag(const struct m0_cm_aggr_group *ag)
Definition: ag.c:391
Definition: ag.h:49
struct m0_cm_ag_id ai_id_curr
Definition: ag.h:97
M0_INTERNAL int m0_sns_cm_ag_iter_init(struct m0_sns_cm_ag_iter *ai)
Definition: ag.c:369