[Pvfs2-users] problem with pvfs2 over diskless cluster

Wenbin wenbin at cs.unm.edu
Thu Oct 12 18:46:27 EDT 2006


Hello, Rob,

On Thu, 12 Oct 2006, Rob Ross wrote:

> Thanks for the detailed report. How did you end up fixing the "cannot find 
> db.h" compile errors?

There are two places need to be changed:
1. src/io/trove/trove-dbpf/module.mk:
[root at phoenix trove-dbpf]# diff -u module.mk.oct12 module.mk
--- module.mk.oct12     2006-10-12 02:43:25.000000000 -0600
+++ module.mk   2006-10-12 16:35:32.000000000 -0600
@@ -17,4 +17,4 @@
         $(DIR)/dbpf-sync.c

  # grab trove-ledger.h from handle-mgmt.
-MODCFLAGS_$(DIR) = -I$(srcdir)/src/io/trove/trove-handle-mgmt
+MODCFLAGS_$(DIR) = -I$(srcdir)/src/io/trove/trove-handle-mgmt 
-I/usr/local/BerkeleyDB.4.5/include

2. src/apps/admin/pvfs2-migrate-collection.c
[root at phoenix admin]# diff -u pvfs2-migrate-collection.c.oct12 
pvfs2-migrate-collection.c
--- pvfs2-migrate-collection.c.oct12    2006-10-12 02:50:15.000000000 
-0600
+++ pvfs2-migrate-collection.c  2006-10-12 16:38:05.000000000 -0600
@@ -24,7 +24,7 @@
  #include <dirent.h>
  #include <limits.h>

-#include <db.h>
+#include "/usr/local/BerkeleyDB.4.5/include/db.h"

  #define __PINT_REQPROTO_ENCODE_FUNCS_C
  #include "pvfs2-config.h"

>
> This "DB_THREAD mandates memory allocation flag on DBT data" seems to 
> indicate that the semantics have changed in Berkeley DB, and they're 
> requiring a certain way of returning data that wasn't required before 
> (probably for thread safety)? That's irritating.
>

Is it hard to fix? Anything can I help?

> The "User memory too small for return value" looks like a bug.

Where does the bug live? any quick fixes?

Thanks,

wenbin.

>
> The "Key/data pair already exists" might be normal.
>
> Rob
>
> Wenbin wrote:
>> Thank you, Murali, for your timely response. While I tried your patch, and 
>> paid attention to the output of the make process, I found several places 
>> complained about cannot find 'db.h', including src/io/trove/trove-dbpf/
>> as well as src/apps/admin/. I fixed that, without applying your patch, 
>> since you said it is wrong, I have following results:
>> 
>> [root at phoenix pvfs2]pvfs2-ping -m /mnt/pvfs2/    still works cleanly.
>> [root at phoenix pvfs2]pvfs2-ls /mnt/pvfs2/    produces following in the 
>> server log:
>> 
>> [E 10/12 03:00] TROVE:DBPF:Berkeley DB: DB_THREAD mandates memory 
>> allocation flag on DBT data
>> [E 10/12 03:00] TROVE:DBPF:Berkeley DB: keyval_db->get: Invalid argument
>> [E 10/12 03:00] TROVE:DBPF:Berkeley DB: DB_THREAD mandates memory 
>> allocation flag on DBT data
>> [E 10/12 03:00] TROVE:DBPF:Berkeley DB: keyval_db->get: Invalid argument
>> 
>> [root at phoenix pvfs2]/usr/local/bin/pvfs2-cp 
>> ~wenbin/AMRs/pvfs/mpi-io-test.c /mnt/pvfs2/
>> PVFS_sys_create: File exists
>> Could not open /mnt/pvfs2/
>> 
>> server log shows:
>> [E 10/12 03:04] TROVE:DBPF:Berkeley DB: keyval_db->get: DB_BUFFER_SMALL: 
>> User memory too small for return value
>> [E 10/12 03:04] TROVE:DBPF:Berkeley DB: keyval_db->put: DB_KEYEXIST: 
>> Key/data pair already exists
>> 
>> However, file successfully copied to /mnt/pvfs2/
>> [root at phoenix pvfs2]# /usr/local/bin/pvfs2-ls /mnt/pvfs2/ vimrc
>> backup.sh
>> lost+found
>> mpi-io-test.c
>> 
>> Now server log says:
>> [E 10/12 03:07] TROVE:DBPF:Berkeley DB: DB_THREAD mandates memory 
>> allocation flag on DBT data
>> [E 10/12 03:07] TROVE:DBPF:Berkeley DB: keyval_db->get: Invalid argument
>> [E 10/12 03:07] TROVE:DBPF:Berkeley DB: DB_THREAD mandates memory 
>> allocation flag on DBT data
>> [E 10/12 03:07] TROVE:DBPF:Berkeley DB: keyval_db->get: Invalid argument
>> 
>> [root at phoenix pvfs2]# /usr/local/bin/pvfs2-ls -l /mnt/pvfs2/
>> Failed to get attributes on handle 1048574,1906098859
>> Getattr failure: No such file or directory
>> Failed to get attributes on handle 1048573,1906098859
>> Getattr failure: No such file or directory
>> drwxrwxrwx    1 root     root            4096 2006-10-11 12:36 lost+found
>> Failed to get attributes on handle 1048574,1906098859
>> Getattr failure: No such file or directory
>> 
>> The server log says:
>> [E 10/12 03:14] TROVE:DBPF:Berkeley DB: DB_THREAD mandates memory 
>> allocation flag on DBT data
>> [E 10/12 03:14] TROVE:DBPF:Berkeley DB: keyval_db->get: Invalid argument
>> [E 10/12 03:14] TROVE:DBPF:Berkeley DB: DB_THREAD mandates memory 
>> allocation flag on DBT data
>> [E 10/12 03:14] TROVE:DBPF:Berkeley DB: keyval_db->get: Invalid argument
>> [E 10/12 03:14] TROVE:DBPF:Berkeley DB: DB_THREAD mandates memory 
>> allocation flag on DBT data
>> [E 10/12 03:14] TROVE:DBPF:Berkeley DB: keyval_db->get: Invalid argument
>> 
>> Good thing is that the infinite loop is gone. Is now the situation better? 
>> Where could the problem be?
>> 
>> Thanks,
>> 
>> wenbin.
>> 
>> On Thu, 12 Oct 2006, Murali Vilayannur wrote:
>> 
>>> 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
>>> 
>>> 
>> _______________________________________________
>> Pvfs2-users mailing list
>> Pvfs2-users at beowulf-underground.org
>> http://www.beowulf-underground.org/mailman/listinfo/pvfs2-users
>> 
>


More information about the Pvfs2-users mailing list