[Pvfs2-cvs] commit by pcarns in pvfs2-1/src/io/trove/trove-dbpf:
dbpf-dspace.c dbpf-keyval.c dbpf.h
CVS commit program
cvs at parl.clemson.edu
Wed Feb 6 14:52:31 EST 2008
Update of /projects/cvsroot/pvfs2-1/src/io/trove/trove-dbpf
In directory parlweb1:/tmp/cvs-serv24195/src/io/trove/trove-dbpf
Modified Files:
Tag: small-file-branch
dbpf-dspace.c dbpf-keyval.c dbpf.h
Log Message:
give keyval iterate functions the ability to remove keys as they go;
untested
Index: dbpf-dspace.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/io/trove/trove-dbpf/dbpf-dspace.c,v
diff -p -u -r1.152 -r1.152.4.1
--- dbpf-dspace.c 8 Nov 2007 21:48:22 -0000 1.152
+++ dbpf-dspace.c 6 Feb 2008 19:52:31 -0000 1.152.4.1
@@ -91,9 +91,6 @@ static inline void organize_post_op_stat
}
}
-static int dbpf_dspace_remove_keyval(
- void * args, TROVE_handle handle, TROVE_keyval_s *key, TROVE_keyval_s *val);
-
static int dbpf_dspace_iterate_handles_op_svc(struct dbpf_op *op_p);
static int dbpf_dspace_create_op_svc(struct dbpf_op *op_p);
static int dbpf_dspace_remove_op_svc(struct dbpf_op *op_p);
@@ -432,7 +429,7 @@ static int dbpf_dspace_remove_op_svc(str
NULL,
&count,
TROVE_ITERATE_START,
- dbpf_dspace_remove_keyval);
+ PINT_dbpf_dspace_remove_keyval);
if(ret != 0 && ret != -TROVE_ENOENT)
{
goto return_error;
@@ -458,7 +455,7 @@ return_error:
return ret;
}
-static int dbpf_dspace_remove_keyval(
+int PINT_dbpf_dspace_remove_keyval(
void * args, TROVE_handle handle, TROVE_keyval_s *key, TROVE_keyval_s *val)
{
int ret;
Index: dbpf-keyval.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/io/trove/trove-dbpf/dbpf-keyval.c,v
diff -p -u -r1.85.6.3 -r1.85.6.4
--- dbpf-keyval.c 5 Feb 2008 22:00:46 -0000 1.85.6.3
+++ dbpf-keyval.c 6 Feb 2008 19:52:31 -0000 1.85.6.4
@@ -805,6 +805,7 @@ static int dbpf_keyval_iterate_op_svc(st
{
int count, ret;
uint64_t tmp_pos = 0;
+ PINT_dbpf_keyval_iterate_callback tmp_callback = NULL;
assert(*op_p->u.k_iterate.count_p > 0);
@@ -827,6 +828,11 @@ static int dbpf_keyval_iterate_op_svc(st
return 1;
}
+ if(op_p->flags & TROVE_KEYVAL_ITERATE_REMOVE)
+ {
+ tmp_callback = PINT_dbpf_dspace_remove_keyval;
+ }
+
ret = PINT_dbpf_keyval_iterate(op_p->coll_p->keyval_db,
op_p->handle,
op_p->coll_p->pcache,
@@ -834,7 +840,7 @@ static int dbpf_keyval_iterate_op_svc(st
op_p->u.k_iterate.val_array,
&count,
*op_p->u.k_iterate.position_p,
- NULL);
+ tmp_callback);
if (ret == -TROVE_ENOENT)
{
*op_p->u.k_iterate.position_p = TROVE_ITERATE_END;
@@ -952,6 +958,7 @@ static int dbpf_keyval_iterate_keys(TROV
static int dbpf_keyval_iterate_keys_op_svc(struct dbpf_op *op_p)
{
int count, ret;
+ PINT_dbpf_keyval_iterate_callback tmp_callback = NULL;
count = *op_p->u.k_iterate_keys.count_p;
@@ -965,6 +972,11 @@ static int dbpf_keyval_iterate_keys_op_s
return 1;
}
+ if(op_p->flags & TROVE_KEYVAL_ITERATE_REMOVE)
+ {
+ tmp_callback = PINT_dbpf_dspace_remove_keyval;
+ }
+
ret = PINT_dbpf_keyval_iterate(op_p->coll_p->keyval_db,
op_p->handle,
op_p->coll_p->pcache,
@@ -973,7 +985,7 @@ static int dbpf_keyval_iterate_keys_op_s
NULL,
&count,
*op_p->u.k_iterate_keys.position_p,
- NULL);
+ tmp_callback);
if (ret == -TROVE_ENOENT)
{
*op_p->u.k_iterate_keys.position_p = TROVE_ITERATE_END;
Index: dbpf.h
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/io/trove/trove-dbpf/dbpf.h,v
diff -p -u -r1.83.2.1 -r1.83.2.2
--- dbpf.h 24 Jan 2008 21:34:37 -0000 1.83.2.1
+++ dbpf.h 6 Feb 2008 19:52:31 -0000 1.83.2.2
@@ -181,6 +181,9 @@ int PINT_dbpf_keyval_iterate(
TROVE_ds_position pos,
PINT_dbpf_keyval_iterate_callback callback);
+int PINT_dbpf_dspace_remove_keyval(
+ void * args, TROVE_handle handle, TROVE_keyval_s *key, TROVE_keyval_s *val);
+
struct dbpf_storage
{
TROVE_ds_flags flags;
More information about the Pvfs2-cvs
mailing list