Index: maint/config/bdb.m4
===================================================================
RCS file: /projects/cvsroot/pvfs2/maint/config/bdb.m4,v
retrieving revision 1.11
diff -u -a -p -r1.11 bdb.m4
--- maint/config/bdb.m4	2 Feb 2007 02:08:54 -0000	1.11
+++ maint/config/bdb.m4	20 Mar 2007 22:45:00 -0000
@@ -217,5 +217,19 @@ AC_DEFUN([AX_BERKELEY_DB],
     AC_DEFINE(HAVE_DB_BUFFER_SMALL, 1, [Define if db library has DB_BUFFER_SMALL error]),
     AC_MSG_RESULT(no))
 
+    dnl Test to check for db->get_pagesize
+    AC_MSG_CHECKING(for berkeley db get_pagesize function)
+    AC_TRY_COMPILE([
+    #include <db.h>
+    ], [
+    int ret = 0;
+    DB *db = NULL;
+    int pagesize;
+    
+    ret = db->get_pagesize(db, &pagesize);
+    ], AC_MSG_RESULT(yes)
+    AC_DEFINE(HAVE_DB_GET_PAGESIZE, 1, [Define if DB has get_pagesize function]),
+    AC_MSG_RESULT(no))
+    
     CFLAGS="$oldcflags"    
 ])
Index: src/io/trove/trove-dbpf/dbpf-dspace.c
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/io/trove/trove-dbpf/dbpf-dspace.c,v
retrieving revision 1.146
diff -u -a -p -r1.146 dbpf-dspace.c
--- src/io/trove/trove-dbpf/dbpf-dspace.c	15 Mar 2007 21:45:23 -0000	1.146
+++ src/io/trove/trove-dbpf/dbpf-dspace.c	20 Mar 2007 22:45:00 -0000
@@ -31,6 +31,7 @@
 #include "dbpf-attr-cache.h"
 #include "dbpf-open-cache.h"
 
+#define TROVE_DEFAULT_DB_PAGESIZE 512
 
 #ifdef __PVFS2_TROVE_THREADED__
 #include <pthread.h>
@@ -530,7 +531,7 @@ static int dbpf_dspace_iterate_handles_o
     size_t sizeof_handle = 0, sizeof_attr = 0;
     int start_size;
     void *tmp_ptr;
-    uint32_t dbpagesize;
+    uint32_t dbpagesize = TROVE_DEFAULT_DB_PAGESIZE;
 
     if (*op_p->u.d_iterate_handles.position_p == TROVE_ITERATE_END)
     {
@@ -594,7 +595,9 @@ static int dbpf_dspace_iterate_handles_o
     /* round up to the nearest 1024 */
     start_size = (start_size + 1023) & (~(unsigned long)1023);
 
+#ifdef HAVE_DB_GET_PAGESIZE
     ret = op_p->coll_p->ds_db->get_pagesize(op_p->coll_p->ds_db, &dbpagesize);
+#endif
 
     multiples_buffer = PINT_mem_aligned_alloc(start_size, dbpagesize);
     if(!multiples_buffer)
@@ -615,7 +618,12 @@ static int dbpf_dspace_iterate_handles_o
     while(i < *op_p->u.d_iterate_handles.count_p)
     {
         ret = dbc_p->c_get(dbc_p, &key, &data, DB_MULTIPLE_KEY|DB_NEXT);
+
+#ifdef HAVE_DB_BUFFER_SMALL
         if(ret == DB_BUFFER_SMALL)
+#else
+        if(ret == ENOMEM)
+#endif
         {
             /* need to allocate more and try again */
             free(multiples_buffer);
