Motr  M0
domain.c
Go to the documentation of this file.
1 /* -*- C -*- */
2 /*
3  * Copyright (c) 2013-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 #include "be/domain.h"
24 
25 #include "ut/ut.h"
26 #include "stob/stob.h" /* m0_stob_id */
27 
28 #include "be/ut/helper.h" /* m0_be_ut_backend */
29 
30 void m0_be_ut_mkfs(void)
31 {
32  struct m0_be_ut_backend ut_be = {};
33  struct m0_be_domain_cfg cfg = {};
34  struct m0_be_domain *dom = &ut_be.but_dom;
35  struct m0_be_seg *seg;
36  void *addr;
37  void *addr2;
38  int rc;
39 
41  /* mkfs mode start */
42  rc = m0_be_ut_backend_init_cfg(&ut_be, &cfg, true);
43  M0_UT_ASSERT(rc == 0);
44  m0_be_ut_backend_seg_add2(&ut_be, 0x10000, true, NULL, &seg);
45  addr = seg->bs_addr;
47 
48  M0_SET0(&ut_be);
49  /* normal mode start */
50  rc = m0_be_ut_backend_init_cfg(&ut_be, &cfg, false);
51  M0_UT_ASSERT(rc == 0);
53  addr2 = seg->bs_addr;
54  M0_ASSERT_INFO(addr == addr2, "addr = %p, addr2 = %p", addr, addr2);
57 
58  M0_SET0(&ut_be);
59  /* normal mode start */
60  rc = m0_be_ut_backend_init_cfg(&ut_be, &cfg, false);
61  M0_UT_ASSERT(rc == 0);
63  M0_ASSERT_INFO(seg == NULL, "seg = %p", seg);
65 }
66 
67 enum {
70 };
71 
72 M0_INTERNAL void m0_be_ut_mkfs_multiseg(void)
73 {
75  struct m0_be_domain_cfg dom_cfg = {};
76  struct m0_be_ut_backend ut_be = {};
78  unsigned i;
79  void *addr;
80  int rc;
81 
82  for (i = 0; i < ARRAY_SIZE(segs_cfg); ++i) {
85  segs_cfg[i] = (struct m0_be_0type_seg_cfg){
87  .bsc_size = size,
88  .bsc_preallocate = false,
89  .bsc_addr = addr,
90  .bsc_stob_create_cfg = NULL,
91  };
92  }
94  dom_cfg.bc_mkfs_mode = true;
95  dom_cfg.bc_seg_cfg = segs_cfg;
96  dom_cfg.bc_seg_nr = ARRAY_SIZE(segs_cfg);
97 
98  rc = m0_be_ut_backend_init_cfg(&ut_be, &dom_cfg, true);
99  M0_ASSERT(rc == 0);
101 }
102 
103 void m0_be_ut_domain(void)
104 {
105  struct m0_be_ut_backend ut_be = {};
106 
109 }
110 
112 {
113  struct m0_be_ut_backend ut_be = {};
114  struct m0_be_domain *dom;
115  struct m0_stob_id stob_id = {};
116  bool is_stob;
117 
119  dom = &ut_be.but_dom;
120  is_stob = m0_be_domain_is_stob_log(dom, &stob_id);
121  M0_UT_ASSERT(!is_stob);
122  is_stob = m0_be_domain_is_stob_seg(dom, &stob_id);
123  M0_UT_ASSERT(!is_stob);
124  /*
125  * TODO add more cases after domain interfaces allow to enumerate stobs
126  * used by segments and log.
127  */
129 }
130 
131 /*
132  * Local variables:
133  * c-indentation-style: "K&R"
134  * c-basic-offset: 8
135  * tab-width: 8
136  * fill-column: 80
137  * scroll-step: 1
138  * End:
139  */
140 /*
141  * vim: tabstop=8 shiftwidth=8 noexpandtab textwidth=80 nowrap
142  */
void * bs_addr
Definition: seg.h:71
M0_INTERNAL int m0_be_ut_backend_init_cfg(struct m0_be_ut_backend *ut_be, const struct m0_be_domain_cfg *cfg, bool mkfs)
Definition: stubs.c:231
M0_INTERNAL bool m0_be_domain_is_stob_log(struct m0_be_domain *dom, const struct m0_stob_id *stob_id)
Definition: domain.c:975
#define NULL
Definition: misc.h:38
void m0_be_ut_domain_is_stob(void)
Definition: domain.c:111
M0_INTERNAL void * m0_be_ut_seg_allocate_addr(m0_bcount_t size)
Definition: helper.c:107
uint64_t m0_bcount_t
Definition: types.h:77
M0_INTERNAL void m0_be_ut_backend_seg_add2(struct m0_be_ut_backend *ut_be, m0_bcount_t size, bool preallocate, const char *stob_create_cfg, struct m0_be_seg **out)
Definition: helper.c:466
M0_INTERNAL bool m0_be_domain_is_stob_seg(struct m0_be_domain *dom, const struct m0_stob_id *stob_id)
Definition: domain.c:986
#define M0_SET0(obj)
Definition: misc.h:64
M0_INTERNAL void m0_be_ut_mkfs_multiseg(void)
Definition: domain.c:72
M0_INTERNAL void m0_be_ut_backend_seg_del(struct m0_be_ut_backend *ut_be, struct m0_be_seg *seg)
Definition: helper.c:483
static char * addr
Definition: node_k.c:37
int i
Definition: dir.c:1033
void m0_be_ut_backend_cfg_default(struct m0_be_domain_cfg *cfg)
Definition: stubs.c:227
struct m0_be_ut_backend ut_be
Definition: ad.c:72
uint64_t bsc_stob_key
Definition: domain.h:70
#define M0_ASSERT(cond)
M0_INTERNAL struct m0_be_seg * m0_be_domain_seg(const struct m0_be_domain *dom, const void *addr)
Definition: domain.c:476
static struct m0_stob_domain * dom
Definition: storage.c:38
void m0_be_ut_backend_init(struct m0_be_ut_backend *ut_be)
Definition: stubs.c:238
Definition: xcode.h:73
Definition: seg.h:66
struct m0_be_domain but_dom
Definition: helper.h:47
struct m0_be_0type_seg_cfg * bc_seg_cfg
Definition: domain.h:126
m0_bcount_t size
Definition: di.c:39
void m0_be_ut_backend_fini(struct m0_be_ut_backend *ut_be)
Definition: stubs.c:242
M0_INTERNAL uint64_t m0_be_ut_seg_allocate_id(void)
Definition: helper.c:124
void m0_be_ut_domain(void)
Definition: domain.c:103
static struct m0_be_seg * seg
Definition: btree.c:40
#define M0_ASSERT_INFO(cond, fmt,...)
bool bc_mkfs_mode
Definition: domain.h:98
unsigned bc_seg_nr
Definition: domain.h:128
void m0_be_ut_mkfs(void)
Definition: domain.c:30
int32_t rc
Definition: trigger_fop.h:47
#define ARRAY_SIZE(a)
Definition: misc.h:45
#define M0_UT_ASSERT(a)
Definition: ut.h:46