Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
sds
mobject-store
Commits
c7b518c0
Commit
c7b518c0
authored
Feb 08, 2018
by
Matthieu Dorier
Browse files
name, oid, and omap databases integrated and tested
parent
bcc74e03
Changes
7
Hide whitespace changes
Inline
Side-by-side
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