Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
B
bake
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
7
Issues
7
List
Boards
Labels
Milestones
Merge Requests
2
Merge Requests
2
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sds
bake
Commits
fb93034e
Commit
fb93034e
authored
Oct 19, 2017
by
Rob Latham
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Create struct to handle pmem entities
A bit cleaner to create and pass around a struct.
parent
b47bf5c9
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
36 additions
and
30 deletions
+36
-30
include/bake-bulk-server.h
include/bake-bulk-server.h
+11
-8
src/bake-bulk-server-daemon.c
src/bake-bulk-server-daemon.c
+4
-5
src/bake-bulk-server.c
src/bake-bulk-server.c
+21
-17
No files found.
include/bake-bulk-server.h
View file @
fb93034e
...
...
@@ -16,6 +16,12 @@ struct bake_bulk_root
bake_target_id_t
target_id
;
};
struct
bake_pool_info
{
PMEMobjpool
*
bb_pmem_pool
;
struct
bake_bulk_root
*
bb_pmem_root
;
};
/**
* Register a bake server instance for a given Margo instance.
*
...
...
@@ -25,19 +31,16 @@ struct bake_bulk_root
*/
void
bake_server_register
(
margo_instance_id
mid
,
PMEMobjpool
*
bb_pmem_pool
,
struct
bake_bulk_root
*
bb_pmem_root
);
struct
bake_pool_info
*
pool_info
);
/**
* Convienence function to set up a PMEM backend.
*
* @param[in] poolname path to pmem backend file
* @param[inout] pmem_pool libpmem pool to use for the bake storage service
* @param[inout] bb_mem_root libpmem root for the bake pool
*
* returns 0 on sucess, -1 if anything goes wrong
* returns a pointer to an initialized `struct bake_pool_info` on sucess,
* NULL if anything goes wrong
*/
int
bake_server_makepool
(
char
*
poolname
,
PMEMobjpool
**
bb_pmem_pool
,
struct
bake_bulk_root
*
bb_pmem_root
);
struct
bake_pool_info
*
bake_server_makepool
(
char
*
poolname
);
#endif
/* __BAKE_BULK_SERVER_H */
src/bake-bulk-server-daemon.c
View file @
fb93034e
...
...
@@ -16,8 +16,7 @@ int main(int argc, char **argv)
{
int
ret
;
margo_instance_id
mid
;
PMEMobjpool
*
bb_pmem_pool
=
NULL
;
struct
bake_bulk_root
bb_pmem_root
;
struct
bake_pool_info
*
pool_info
;
if
(
argc
!=
3
)
{
...
...
@@ -26,7 +25,7 @@ int main(int argc, char **argv)
return
(
-
1
);
}
ret
=
bake_server_makepool
(
argv
[
2
],
&
bb_pmem_pool
,
&
bb_pmem_root
);
pool_info
=
bake_server_makepool
(
argv
[
2
]
);
/* start margo */
/* use the main xstream for driving progress and executing rpc handlers */
...
...
@@ -34,7 +33,7 @@ int main(int argc, char **argv)
assert
(
mid
);
/* register the bake bulk server */
bake_server_register
(
mid
,
bb_pmem_pool
,
&
bb_pmem_root
);
bake_server_register
(
mid
,
pool_info
);
/* NOTE: at this point this server ULT has two options. It can wait on
* whatever mechanism it wants to (however long the daemon should run and
...
...
@@ -52,7 +51,7 @@ int main(int argc, char **argv)
*/
margo_wait_for_finalize
(
mid
);
pmemobj_close
(
bb_pmem_pool
);
pmemobj_close
(
pool_info
->
bb_pmem_pool
);
return
(
0
);
}
...
...
src/bake-bulk-server.c
View file @
fb93034e
...
...
@@ -21,38 +21,42 @@ typedef struct {
static
PMEMobjpool
*
g_pmem_pool
=
NULL
;
static
struct
bake_bulk_root
*
g_pmem_root
=
NULL
;
int
bake_server_makepool
(
char
*
poolname
,
PMEMobjpool
**
bb_pmem_pool
,
struct
bake_bulk_root
*
bb_pmem_root
)
struct
bake_pool_info
*
bake_server_makepool
(
char
*
poolname
)
{
PMEMoid
root_oid
;
char
target_string
[
64
];
struct
bake_pool_info
*
pool_info
;
pool_info
=
malloc
(
sizeof
(
*
pool_info
));
/* open pmem pool */
*
bb_pmem_pool
=
pmemobj_open
(
poolname
,
NULL
);
if
(
!
bb_pmem_pool
)
pool_info
->
bb_pmem_pool
=
pmemobj_open
(
poolname
,
NULL
);
if
(
!
pool_info
->
bb_pmem_pool
)
{
fprintf
(
stderr
,
"pmemobj_open: %s
\n
"
,
pmemobj_errormsg
());
return
(
-
1
);
return
(
NULL
);
}
/* find root */
root_oid
=
pmemobj_root
(
*
bb_pmem_pool
,
sizeof
(
*
bb_pmem_root
));
bb_pmem_root
=
pmemobj_direct
(
root_oid
);
if
(
uuid_is_null
(
bb_pmem_root
->
target_id
.
id
))
root_oid
=
pmemobj_root
(
pool_info
->
bb_pmem_pool
,
sizeof
(
*
(
pool_info
->
bb_pmem_root
))
);
pool_info
->
bb_pmem_root
=
pmemobj_direct
(
root_oid
);
if
(
uuid_is_null
(
pool_info
->
bb_pmem_root
->
target_id
.
id
))
{
uuid_generate
(
bb_pmem_root
->
target_id
.
id
);
pmemobj_persist
(
*
bb_pmem_pool
,
bb_pmem_root
,
sizeof
(
*
bb_pmem_root
));
uuid_generate
(
pool_info
->
bb_pmem_root
->
target_id
.
id
);
pmemobj_persist
(
pool_info
->
bb_pmem_pool
,
pool_info
->
bb_pmem_root
,
sizeof
(
*
(
pool_info
->
bb_pmem_root
))
);
}
uuid_unparse
(
bb_pmem_root
->
target_id
.
id
,
target_string
);
uuid_unparse
(
pool_info
->
bb_pmem_root
->
target_id
.
id
,
target_string
);
fprintf
(
stderr
,
"BAKE target ID: %s
\n
"
,
target_string
);
return
0
;
return
pool_info
;
}
void
bake_server_register
(
margo_instance_id
mid
,
PMEMobjpool
*
bb_pmem_pool
,
struct
bake_bulk_root
*
bb_pmem_root
)
void
bake_server_register
(
margo_instance_id
mid
,
struct
bake_pool_info
*
pool_info
)
{
/* register RPCs */
MARGO_REGISTER
(
mid
,
"bake_bulk_shutdown_rpc"
,
void
,
void
,
...
...
@@ -86,8 +90,8 @@ void bake_server_register(margo_instance_id mid, PMEMobjpool *bb_pmem_pool,
bake_bulk_noop_ult
);
/* set global pmem variables needed by the bake server */
g_pmem_pool
=
bb_pmem_pool
;
g_pmem_root
=
bb_pmem_root
;
g_pmem_pool
=
pool_info
->
bb_pmem_pool
;
g_pmem_root
=
pool_info
->
bb_pmem_root
;
return
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment