[Pvfs2-users] problem with pvfs2 over diskless cluster

Murali Vilayannur murali.vilayannur at gmail.com
Thu Oct 12 02:25:37 EDT 2006


Hi Wenbin,
> Hello, I tried to install pvfs2, version 1.5.1 on a diskless cluster. 
> The head node is to be both the metadata server as well as the io 
> server. The clients are nfs mounted to the head node. The underlying 
> database is the Berkeley 4.5.20. The check of "pvfs2-ping -m 
> /mnt/pvfs2/" is allright. However, when I tried to do "pvfs2-cp" or 
> "pvfs2-ls", the commands hang. The /tmp/pvfs2-server.log shows 
> following, only 2 lines cut out of many:
>
> [E 10/11 14:45] TROVE:DBPF:Berkeley DB: keyval_db->get: 
> DB_BUFFER_SMALL: User memory too small for return value
> [E 10/11 14:45] TROVE:DBPF:Berkeley DB: keyval_db->get: 
> DB_BUFFER_SMALL: User memory too small for return value
> ....
>
> The database is configured with:
> ../dist/configure --enable-pthread_api --disable-libtool-lock 
> --enable-debug
>
> the pvfs2-1.5.1 is configured with:
> ./configure -with-db=/usr/local/BerkeleyDB.4.5
I dont know how/what is the right way to fix this problem.
Sam will probably find the right fixes for this. It does look like a bdb 
4.5 specific issue.

Attached patch somehow  fixes it for me although it seems (and probably 
is) obviously incorrect. Also, it does look like the server goes off in 
an infinite loop once it hits this error, but that is a separate issue I 
think..
thanks,
Murali

-------------- next part --------------
Index: src/io/trove/trove-dbpf/dbpf-keyval.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/io/trove/trove-dbpf/dbpf-keyval.c,v
retrieving revision 1.78
diff -u -r1.78 dbpf-keyval.c
--- src/io/trove/trove-dbpf/dbpf-keyval.c	22 Sep 2006 19:27:31 -0000	1.78
+++ src/io/trove/trove-dbpf/dbpf-keyval.c	12 Oct 2006 06:19:56 -0000
@@ -1684,9 +1684,8 @@
     key.data = &key_entry;
     key.size = DBPF_KEYVAL_DB_ENTRY_TOTAL_SIZE(0);
     key.flags = DB_DBT_USERMEM;
-    data.data = op_p->u.k_get_handle_info.info;
     data.ulen = sizeof(TROVE_keyval_handle_info);
-    data.flags = DB_DBT_USERMEM;
+    data.flags = 0;
 
     ret = op_p->coll_p->keyval_db->get(
         op_p->coll_p->keyval_db, NULL, &key, &data, 0);
@@ -1699,6 +1698,9 @@
         }
 
         return -dbpf_db_error_to_trove_error(ret);
+    }
+    else {
+        memcpy(op_p->u.k_get_handle_info.info, data.data, data.size);
     }
 
     gossip_debug(GOSSIP_DBPF_KEYVAL_DEBUG,


More information about the Pvfs2-users mailing list