NVMLib  very early alpha
A library to optimally use a Hybrid RAM setup.
metadata.c
Go to the documentation of this file.
1 #include "metadata.h"
2 
4 PMEMobjpool *init_pop;
5 
7  char init_file_name[50];
8  bool opened = true;
9  strcpy(init_file_name, program_invocation_short_name);
10  strcat(init_file_name, "_init");
11  init_pop = pmemobj_open(init_file_name, POBJ_LAYOUT_NAME(init_struct));
12  if (!init_pop) {
13  opened = false;
14  char layout_name[50];
15  strcpy(layout_name, POBJ_LAYOUT_NAME(init_struct));
16  // strcat(layout_name, "_init_layout");
17  init_pop = pmemobj_create(init_file_name, layout_name, PMEMOBJ_MIN_POOL * 4, 0666);
18  }
19 
20  metadata_root* root = D_RO(POBJ_ROOT(init_pop, struct metadata_root));
21  if (!opened) {
22  metadata data;
23  data.inst_num = 0;
24  data.num_pools = 0;
25  TX_BEGIN(init_pop) {
26  TX_SET_DIRECT(root, init_metadata, data);
27  } TX_END
28  }
29 #ifdef DEBUG
30  printf("metadata.c num_pools = %d\n", root->init_metadata.num_pools);
31 #endif
32 }
33 
35 #ifdef DEBUG
36  printf("metadata: numpools = %d \n", num_pools);
37 #endif
38  metadata_root* root = D_RW(POBJ_ROOT(init_pop, struct metadata_root));
39  metadata data;
40  data.inst_num = root->init_metadata.inst_num;
41  data.num_pools = num_pools;
42  TX_BEGIN(init_pop) {
43  TX_SET_DIRECT(root, init_metadata, data);
44  } TX_ONABORT {
45  fprintf(stderr, "%s: Updation of num_pools aborted: %s\n", __func__,
46  pmemobj_errormsg());
47  abort();
48  } TX_END
49 }
50 
52  metadata_root* root = D_RO(POBJ_ROOT(init_pop, struct metadata_root));
53  return root->init_metadata.num_pools;
54 }
initialize_metadata
void initialize_metadata()
Definition: metadata.c:6
metadata
Definition: metadata.h:12
update_num_pools
void update_num_pools(int num_pools)
Definition: metadata.c:34
metadata_root::init_metadata
metadata init_metadata
Definition: metadata.h:18
program_invocation_short_name
char * program_invocation_short_name
init_pop
PMEMobjpool * init_pop
Definition: metadata.c:4
metadata_root
Definition: metadata.h:17
retrieve_num_pools
int retrieve_num_pools()
Definition: metadata.c:51
metadata::inst_num
uint64_t inst_num
Definition: metadata.h:14
metadata.h
num_pools
uint32_t num_pools
Definition: pool.h:13
metadata::num_pools
int num_pools
Definition: metadata.h:13