[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