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
13
Issues
13
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
c7b518c0
Commit
c7b518c0
authored
Feb 08, 2018
by
Matthieu Dorier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
name, oid, and omap databases integrated and tested
parent
bcc74e03
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
44 additions
and
18 deletions
+44
-18
include/mobject-client.h
include/mobject-client.h
+1
-1
src/client/write-op.c
src/client/write-op.c
+6
-6
src/server/core/core-read-op.cpp
src/server/core/core-read-op.cpp
+6
-1
src/server/core/core-write-op.cpp
src/server/core/core-write-op.cpp
+21
-0
src/server/core/key-types.h
src/server/core/key-types.h
+0
-1
tests/mobject-client-test.c
tests/mobject-client-test.c
+9
-8
tests/mobject-test-util.sh
tests/mobject-test-util.sh
+1
-1
No files found.
include/mobject-client.h
View file @
c7b518c0
...
...
@@ -194,7 +194,7 @@ extern "C" {
void
mobject_write_op_zero
(
mobject_store_write_op_t
write_op
,
uint64_t
offset
,
uint64
_t
len
);
size
_t
len
);
/**
* Set key/value pairs on an object
...
...
src/client/write-op.c
View file @
c7b518c0
...
...
@@ -42,8 +42,8 @@ void mobject_write_op_create(mobject_store_write_op_t write_op,
void
mobject_write_op_write
(
mobject_store_write_op_t
write_op
,
const
char
*
buffer
,
size_t
len
,
uint64_t
offset
)
uint64_t
offset
,
size_t
len
)
{
MOBJECT_ASSERT
(
write_op
!=
MOBJECT_WRITE_OP_NULL
,
"invalid mobject_store_write_op_t obect"
);
MOBJECT_ASSERT
(
!
(
write_op
->
ready
),
"can't modify a write_op that is ready to be processed"
);
...
...
@@ -53,7 +53,7 @@ void mobject_write_op_write(mobject_store_write_op_t write_op,
action
->
buffer
.
as_pointer
=
buffer
;
action
->
len
=
len
;
action
->
offset
=
offset
;
WRITE_ACTION_UPCAST
(
base
,
action
);
DL_APPEND
(
write_op
->
actions
,
base
);
...
...
@@ -98,9 +98,9 @@ void mobject_write_op_write_full(mobject_store_write_op_t write_op,
void
mobject_write_op_write_same
(
mobject_store_write_op_t
write_op
,
const
char
*
buffer
,
uint64_t
offset
,
size_t
data_len
,
size_t
write_len
,
uint64_t
offset
)
size_t
write_len
)
{
MOBJECT_ASSERT
(
write_op
!=
MOBJECT_WRITE_OP_NULL
,
"invalid mobject_store_write_op_t obect"
);
MOBJECT_ASSERT
(
!
(
write_op
->
ready
),
"can't modify a write_op that is ready to be processed"
);
...
...
@@ -186,7 +186,7 @@ void mobject_write_op_truncate(mobject_store_write_op_t write_op,
void
mobject_write_op_zero
(
mobject_store_write_op_t
write_op
,
uint64_t
offset
,
uint64
_t
len
)
size
_t
len
)
{
MOBJECT_ASSERT
(
write_op
!=
MOBJECT_WRITE_OP_NULL
,
"invalid mobject_store_write_op_t obect"
);
MOBJECT_ASSERT
(
!
(
write_op
->
ready
),
"can't modify a write_op that is ready to be processed"
);
...
...
src/server/core/core-read-op.cpp
View file @
c7b518c0
...
...
@@ -14,9 +14,14 @@
#include "src/server/core/covermap.hpp"
static
int
tabs
=
0
;
/*
#define ENTERING {for(int i=0; i<tabs; i++) fprintf(stderr," "); fprintf(stderr,"[ENTERING]>> %s\n",__FUNCTION__); tabs += 1;}
#define LEAVING {tabs -= 1; for(int i=0; i<tabs; i++) fprintf(stderr," "); fprintf(stderr,"[LEAVING]<<< %s\n",__FUNCTION__); }
#define ERROR {for(int i=0; i<(tabs+1); i++) fprintf(stderr, " "); fprintf(stderr,"[ERROR] "); }
*/
#define ENTERING
#define LEAVING
#define ERROR
static
void
read_op_exec_begin
(
void
*
);
static
void
read_op_exec_stat
(
void
*
,
uint64_t
*
,
time_t
*
,
int
*
);
...
...
@@ -113,7 +118,7 @@ void read_op_exec_read(void* u, uint64_t offset, size_t len, buffer_u buf, size_
while
(
!
coverage
.
full
()
&&
it
!=
segment_map
.
end
()
&&
it
->
first
.
oid
==
oid
)
{
const
segment_key_t
&
seg
=
it
->
first
;
const
bake_region_id_t
&
region
=
it
->
second
;
switch
(
seg
.
type
)
{
case
seg_type_t
:
:
ZERO
:
coverage
.
set
(
seg
.
start_index
,
seg
.
end_index
);
...
...
src/server/core/core-write-op.cpp
View file @
c7b518c0
...
...
@@ -8,10 +8,16 @@
#include "src/io-chain/write-op-visitor.h"
#include "src/server/core/fake-kv.hpp"
#if 0
static int tabs = 0;
#define ENTERING {for(int i=0; i<tabs; i++) fprintf(stderr," "); fprintf(stderr,"[ENTERING]>> %s\n",__FUNCTION__); tabs += 1;}
#define LEAVING {tabs -= 1; for(int i=0; i<tabs; i++) fprintf(stderr," "); fprintf(stderr,"[LEAVING]<<< %s\n",__FUNCTION__); }
#define ERROR {for(int i=0; i<(tabs+1); i++) fprintf(stderr, " "); fprintf(stderr,"[ERROR] "); }
#else
#define ENTERING
#define LEAVING
#define ERROR
#endif
static
void
write_op_exec_begin
(
void
*
);
static
void
write_op_exec_end
(
void
*
);
...
...
@@ -177,8 +183,23 @@ void write_op_exec_write_full(void* u, buffer_u buf, size_t len)
unsigned
i
;
// TODO: check return values of those calls
ret
=
bake_create
(
bph
,
bti
,
len
,
&
rid
);
if
(
ret
!=
0
)
{
ERROR
fprintf
(
stderr
,
"bake_create() returned %d
\n
"
,
ret
);
LEAVING
;
return
;
}
ret
=
bake_proxy_write
(
bph
,
rid
,
0
,
remote_bulk
,
buf
.
as_offset
,
remote_addr_str
,
len
);
if
(
ret
!=
0
)
{
ERROR
fprintf
(
stderr
,
"bake_proxy_write() returned %d
\n
"
,
ret
);
LEAVING
;
return
;
}
ret
=
bake_persist
(
bph
,
rid
);
if
(
ret
!=
0
)
{
ERROR
fprintf
(
stderr
,
"bake_persist() returned %d
\n
"
,
ret
);
LEAVING
;
return
;
}
insert_region_log_entry
(
oid
,
0
,
len
,
&
rid
);
LEAVING
;
}
...
...
src/server/core/key-types.h
View file @
c7b518c0
...
...
@@ -30,5 +30,4 @@ typedef struct omap_key_t {
#define MAX_OMAP_VAL_SIZE 256
#define SMALL_REGION_THRESHOLD (sizeof(bake_region_id_t))
#endif
tests/mobject-client-test.c
View file @
c7b518c0
...
...
@@ -26,23 +26,23 @@ int main(int argc, char** argv)
mobject_store_write_op_write
(
write_op
,
content
+
8
,
4
,
8
);
// Add a "writesame" operation to write "DDDD" in two "DD",
// content should then be "AAAABBBBCCCCDDDD"
//
mobject_store_write_op_writesame(write_op, content+12, 2, 4, 12);
mobject_store_write_op_writesame
(
write_op
,
content
+
12
,
2
,
4
,
12
);
// Add a "append" operation to append "EEEEFFFF"
// content should then be "AAAABBBBCCCCDDDDEEEEFFFFF"
//
mobject_store_write_op_append(write_op, content+16, 8);
mobject_store_write_op_append
(
write_op
,
content
+
16
,
8
);
// Add a "remove" operation
// mobject_store_write_op_remove(write_op);
// Add a "truncate" operation to remove the "FFFF" part
// content should then be "AAAABBBBCCCCDDDDEEEE"
//
mobject_store_write_op_truncate(write_op, 20);
mobject_store_write_op_truncate
(
write_op
,
20
);
// Add a "zero" operation zero-ing the "BBBBCCCC"
// content should then be "AAAA********DDDDEEEE" where "*" represent 0s
//
mobject_store_write_op_zero(write_op, 4, 8);
mobject_store_write_op_zero
(
write_op
,
4
,
8
);
// Add a "omap_set" operation
const
char
*
keys
[]
=
{
"matthieu"
,
"rob"
,
"shane"
,
"phil"
,
"robl"
};
const
char
*
values
[]
=
{
"mdorier@anl.gov"
,
"rross@anl.gov"
,
"ssnyder@anl.gov"
,
"carns@anl.gov"
,
"robl@anl.gov"
};
size_t
val_sizes
[]
=
{
16
,
14
,
16
,
14
,
13
};
mobject_store_write_op_omap_set
(
write_op
,
keys
,
values
,
val_sizes
,
5
);
//
mobject_store_write_op_omap_set(write_op, keys, values, val_sizes, 5);
// keys will be sorted and stored as follows:
/* matthieu => mdorier@anl.gov
phil => carns@anl.gov
...
...
@@ -74,6 +74,7 @@ int main(int argc, char** argv)
int
prval2
;
mobject_store_read_op_read
(
read_op
,
0
,
512
,
read_buf
,
&
bytes_read
,
&
prval2
);
// Add "omap_get_keys" operation
#if 0
const char* start_after1 = "rob";
mobject_store_omap_iter_t iter3;
int prval3;
...
...
@@ -91,7 +92,7 @@ int main(int argc, char** argv)
mobject_store_omap_iter_t iter5;
int prval5;
mobject_store_read_op_omap_get_vals_by_keys(read_op, keys, 2, &iter5, &prval5);
#endif
mobject_store_read_op_operate
(
read_op
,
ioctx
,
"test-object"
,
LIBMOBJECT_OPERATION_NOFLAG
);
mobject_store_release_read_op
(
read_op
);
...
...
@@ -107,7 +108,7 @@ int main(int argc, char** argv)
for
(
i
=
0
;
i
<
bytes_read
;
i
++
)
printf
(
"%c"
,
read_buf
[
i
]
?
read_buf
[
i
]
:
'*'
);
printf
(
"
\n
"
);
}
#if 0
printf("omap_get_keys: prval=%d\n", prval3);
{
char* key = NULL;
...
...
@@ -138,8 +139,8 @@ int main(int argc, char** argv)
if(key) printf("===> key: \"%s\" , val: %s \n", key, val);
} while(key);
}
#endif
}
mobject_store_ioctx_destroy
(
ioctx
);
mobject_store_shutdown
(
cluster
);
...
...
tests/mobject-test-util.sh
View file @
c7b518c0
...
...
@@ -25,7 +25,7 @@ function mobject_test_start_servers()
rm
-rf
${
storage
}
bake-mkpool
-s
50M /dev/shm/mobject.dat
run_to
$maxtime
mpirun
-np
$nservers
src/server/mobject-server-daemon
na+sm
://
$cfile
&
run_to
$maxtime
mpirun
-np
$nservers
src/server/mobject-server-daemon
tcp
://
$cfile
&
if
[
$?
-ne
0
]
;
then
# TODO: this doesn't actually work; can't check return code of
# something executing in background. We have to rely on the
...
...
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