I cannot touch or cp files to glusterfs filesystem with bdb backend. orion31 is glusterfs server, orion28 is glusterfs client. ------------------------------------------------------------------------------------------- [root at orion28 ~]# mount -t glusterfs /etc/glusterfs/glusterfs-bdb.vol /mnt [root at orion28 ~]# touch /mnt/a touch: cannot touch `/mnt/a': No such file or directory [root at orion28 ~]# ls a b [root at orion28 ~]# cp a /mnt/a cp: writing `/mnt/a': File descriptor in bad state cp: closing `/mnt/a': File descriptor in bad state ------------------------------------------------------------------------------------------- [root at orion28 ~]# tail /var/log/glusterfs/glusterfs.log 2009-03-18 09:31:21 E [fuse-bridge.c:539:fuse_attr_cbk] glusterfs-fuse: 13: UTIMENS() /a => -1 (Operation not permitted) 2009-03-18 09:32:17 E [fuse-bridge.c:1606:fuse_writev_cbk] glusterfs-fuse: 17: WRITE => -1 (File descriptor in bad state) 2009-03-18 09:32:17 E [fuse-bridge.c:924:fuse_err_cbk] glusterfs-fuse: 18: FLUSH() ERR => -1 (File descriptor in bad state) ------------------------------------------------------------------------------------------- My glusterfs server log: [root at orion31 glusterfs]# tail glusterfsd.log -n 500 ......................... 2009-03-18 09:30:26 W [xlator.c:426:validate_xlator_volume_options] brick: option 'mandatory' is deprecated, preferred is 'mandatory-locks', continuing with correction 2009-03-18 09:30:26 W [glusterfsd.c:451:_log_if_option_is_invalid] bdb: option 'logdir' is not recognized 2009-03-18 09:30:26 W [glusterfsd.c:451:_log_if_option_is_invalid] bdb: option 'errfile' is not recognized 2009-03-18 09:30:26 W [glusterfsd.c:451:_log_if_option_is_invalid] bdb: option 'lru-limit' is not recognized 2009-03-18 09:30:26 W [glusterfsd.c:451:_log_if_option_is_invalid] bdb: option 'checkpoint-timeout' is not recognized 2009-03-18 09:30:26 W [glusterfsd.c:451:_log_if_option_is_invalid] bdb: option 'cache' is not recognized 2009-03-18 09:30:26 W [glusterfsd.c:451:_log_if_option_is_invalid] bdb: option 'directory' is not recognized 2009-03-18 09:30:26 N [glusterfsd.c:1134:main] glusterfs: Successfully started 2009-03-18 09:31:14 N [server-protocol.c:7295:mop_setvolume] server: accepted client from 10.55.22.28:1023 2009-03-18 09:31:14 N [server-protocol.c:7295:mop_setvolume] server: accepted client from 10.55.22.28:1022 2009-03-18 09:31:17 E [bdb.c:2750:bdb_readdir] bdb: invalid argument: bfd 2009-03-18 09:31:17 E [bdb.c:1498:bdb_releasedir] bdb: failed to extract fd data from fd=0x513880 2009-03-18 09:31:21 E [bdb.c:123:bdb_mknod] bdb: bdb_db_get() failed for path: /a 2009-03-18 09:31:21 E [bdb.c:2022:bdb_utimens] bdb: failed to lstat on /data1/bdb-export/a (Operation not permitted) 2009-03-18 09:32:17 E [bdb.c:789:bdb_writev] bdb: invalid argument: bfd 2009-03-18 09:32:17 E [bdb.c:868:bdb_flush] bdb: invalid argument: bfd 2009-03-18 09:32:17 E [bdb.c:868:bdb_flush] bdb: invalid argument: bfd 2009-03-18 09:32:17 E [bdb.c:891:bdb_release] bdb: failed to extract bdb specific information from fd:0x513a80 ------------------------------------------------------------------------------------------- My server vol file: [root at orion32 bdb-export]# cat /etc/glusterfs/glusterfsd-bdb.vol volume bdb type storage/bdb option directory /data1/bdb-export #option transaction off # default is on option cache on # default is off #option access-mode btree # default will be hash option checkpoint-timeout 10 # default is 30seconds #option file-mode 0644 # default is 0644 #option dir-mode 0755 # default is 0755 option lru-limit 200 # default is 100 option errfile /var/log/glusterfs/bdberrlog # default is /dev/null? option logdir /var/log/glusterfs end-volume volume brick type features/locks option mandatory on # enables mandatory locking on all files subvolumes bdb end-volume volume server type protocol/server option transport-type tcp # For TCP/IP transport #option transport.socket.listen-port 6996 # Default is 6996 subvolumes brick option auth.addr.brick.allow * # access to "brick" volume end-volume ------------------------------------------------------------------------------------------- My client vol: [root at orion28 ~]# cat /etc/glusterfs/glusterfs-bdb.vol volume orion31 type protocol/client option transport-type tcp option remote-host orion31 # IP address of the remote brick # option transport-timeout 30 # seconds to wait for a reply # from server for each request option remote-subvolume brick # name of the remote volume end-volume ------------------------------------------------------------------------------------------- My system envirement: centos4.4 linux x86_64 dkms-fuse-2.7.4-1.nodist.rf fuse-2.7.4-1.el4.rf glusterfs 2.0.0rc4 bdb 4.7.25 my bdb 4.7.25: [root at orion32 bdb-export]# rpm -ql db /usr/local/bdb4.7/lib64/libdb-4.7.so /usr/local/bdb4.7/lib64/libdb_cxx-4.7.so [root at orion32 bdb-export]#rpm -ql db-devel /usr/local/bdb4.7/include/db.h /usr/local/bdb4.7/include/db_cxx.h /usr/local/bdb4.7/lib/libdb-4.7.a /usr/local/bdb4.7/lib/libdb-4.7.la /usr/local/bdb4.7/lib/libdb-4.so /usr/local/bdb4.7/lib/libdb.a /usr/local/bdb4.7/lib/libdb.so /usr/local/bdb4.7/lib/libdb_cxx-4.7.a /usr/local/bdb4.7/lib/libdb_cxx-4.7.la /usr/local/bdb4.7/lib/libdb_cxx-4.so /usr/local/bdb4.7/lib/libdb_cxx.a /usr/local/bdb4.7/lib/libdb_cxx.so [root at orion32 bdb-export]# ls -l /lib64/libdb-4.7.so lrwxrwxrwx 1 root root 36 Mar 17 16:59 /lib64/libdb-4.7.so -> /usr/local/bdb4.7/lib64/libdb-4.7.so [root at orion32 bdb-export]# ls -l /usr/lib64/libdb-4.7.so lrwxrwxrwx 1 root root 36 Mar 17 16:59 /usr/lib64/libdb-4.7.so -> /usr/local/bdb4.7/lib64/libdb-4.7.so [root at orion32 bdb-export]# for bdb's version in centos4 is 4.2, and difficult to upgrade to 4.7.25, then I installed bdb4.7 in /usr/local/bdb/4.7 and compile glusterfs 2.0.0rc4 with libdb-4.7 through modifing xlators/storage/bdb/src/Makefile.am/Makefile.in. and link /usr/include/db.h to /usr/local/bdb4.7/include/db.h -------------------------------------------------------------------------------------------