Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mobject-store
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
12
Issues
12
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sds
mobject-store
Commits
e800fbdf
Commit
e800fbdf
authored
Dec 07, 2017
by
Matthieu Dorier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added bake-based write functions
parent
9e509713
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
50 additions
and
1 deletion
+50
-1
src/client/cluster.c
src/client/cluster.c
+1
-1
src/server/core/core-write-op.cpp
src/server/core/core-write-op.cpp
+49
-0
No files found.
src/client/cluster.c
View file @
e800fbdf
...
...
@@ -100,7 +100,7 @@ int mobject_store_connect(mobject_store_t cluster)
/* intialize margo */
/* XXX: probably want to expose some way of tweaking threading parameters */
cluster_handle
->
mid
=
margo_init
(
proto
,
MARGO_
CLIENT
_MODE
,
0
,
-
1
);
cluster_handle
->
mid
=
margo_init
(
proto
,
MARGO_
SERVER
_MODE
,
0
,
-
1
);
if
(
cluster_handle
->
mid
==
MARGO_INSTANCE_NULL
)
{
fprintf
(
stderr
,
"Error: Unable to initialize margo
\n
"
);
...
...
src/server/core/core-write-op.cpp
View file @
e800fbdf
#include <map>
#include <string>
#include <iostream>
#include <bake-bulk-client.h>
#include "src/server/visitor-args.h"
#include "src/io-chain/write-op-visitor.h"
...
...
@@ -56,21 +57,69 @@ void write_op_exec_create(void* u, int exclusive)
void
write_op_exec_write
(
void
*
u
,
buffer_u
buf
,
size_t
len
,
uint64_t
offset
)
{
auto
vargs
=
static_cast
<
server_visitor_args_t
>
(
u
);
bake_target_id_t
bti
=
vargs
->
srv_ctx
->
bake_id
;
bake_bulk_region_id_t
rid
;
hg_bulk_t
remote_bulk
=
vargs
->
bulk_handle
;
hg_addr_t
remote_addr
=
vargs
->
client_addr
;
int
ret
;
// TODO: check return values of those calls
ret
=
bake_bulk_create
(
bti
,
len
,
&
rid
);
ret
=
bake_bulk_proxy_write
(
bti
,
rid
,
0
,
remote_bulk
,
buf
.
as_offset
,
remote_addr
,
len
);
ret
=
bake_bulk_persist
(
bti
,
rid
);
// TODO: write [offset,len,rid] in sds-keyval for the specified object
}
void
write_op_exec_write_full
(
void
*
u
,
buffer_u
buf
,
size_t
len
)
{
auto
vargs
=
static_cast
<
server_visitor_args_t
>
(
u
);
bake_target_id_t
bti
=
vargs
->
srv_ctx
->
bake_id
;
bake_bulk_region_id_t
rid
;
hg_bulk_t
remote_bulk
=
vargs
->
bulk_handle
;
hg_addr_t
remote_addr
=
vargs
->
client_addr
;
int
ret
;
// TODO: check return values of those calls
ret
=
bake_bulk_create
(
bti
,
len
,
&
rid
);
ret
=
bake_bulk_proxy_write
(
bti
,
rid
,
0
,
remote_bulk
,
buf
.
as_offset
,
remote_addr
,
len
);
ret
=
bake_bulk_persist
(
bti
,
rid
);
// TODO: write [offset,len,rid] in sds-keyval for the specified object
}
void
write_op_exec_writesame
(
void
*
u
,
buffer_u
buf
,
size_t
data_len
,
size_t
write_len
,
uint64_t
offset
)
{
auto
vargs
=
static_cast
<
server_visitor_args_t
>
(
u
);
bake_target_id_t
bti
=
vargs
->
srv_ctx
->
bake_id
;
bake_bulk_region_id_t
rid
;
hg_bulk_t
remote_bulk
=
vargs
->
bulk_handle
;
hg_addr_t
remote_addr
=
vargs
->
client_addr
;
int
ret
;
// TODO: check return values of those calls
ret
=
bake_bulk_create
(
bti
,
data_len
,
&
rid
);
ret
=
bake_bulk_proxy_write
(
bti
,
rid
,
0
,
remote_bulk
,
buf
.
as_offset
,
remote_addr
,
data_len
);
ret
=
bake_bulk_persist
(
bti
,
rid
);
// TODO: write [offset,len,rid] in sds-keyval for the specified object
}
void
write_op_exec_append
(
void
*
u
,
buffer_u
buf
,
size_t
len
)
{
auto
vargs
=
static_cast
<
server_visitor_args_t
>
(
u
);
bake_target_id_t
bti
=
vargs
->
srv_ctx
->
bake_id
;
bake_bulk_region_id_t
rid
;
hg_bulk_t
remote_bulk
=
vargs
->
bulk_handle
;
hg_addr_t
remote_addr
=
vargs
->
client_addr
;
int
ret
;
// TODO: check return values of those calls
ret
=
bake_bulk_create
(
bti
,
len
,
&
rid
);
ret
=
bake_bulk_proxy_write
(
bti
,
rid
,
0
,
remote_bulk
,
buf
.
as_offset
,
remote_addr
,
len
);
ret
=
bake_bulk_persist
(
bti
,
rid
);
// TODO: write [offset,len,rid] in sds-keyval for the specified object
}
void
write_op_exec_remove
(
void
*
u
)
...
...
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