[Gluster-devel] problem with file locking use fcnt
Dale Johnson
dale.johnson at gmail.com
Fri Jun 20 09:58:20 UTC 2008
First, gluster is a great product in a great space, and has been working well.
But I have hit a roadblock trying to do this:
#include <stdio.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>
int main( int argc, char ** argv ) {
if( argc == 2 ) {
int fd = open( argv[1], O_WRONLY | O_TRUNC | O_CREAT, 0666 );
char s[] = "hello, world\n";
write( fd, s, sizeof( s ) );
close( fd );
int fd2 = open( argv[1], O_RDONLY );
char buf[80];
memset( buf, '\0', sizeof( buf ) );
read( fd2, buf, sizeof( buf ) );
printf( "buf: %s\n", buf );
struct flock lk;
lk.l_type = F_RDLCK;
lk.l_whence = SEEK_SET;
lk.l_start = 0;
lk.l_len = 6;
lk.l_pid = 0;
int i = fcntl( fd, F_SETLK, &lk );
printf( "i=%d, errno=%d\n", i, errno );
perror( "foo" );
close( fd2 );
} else {
printf( "usage: %s <outfile>\n", argv[0] );
exit( 2 );
}
}
and I get this:
[root at 2D src]# ./a.out /mnt/glusterfs/fooX
buf: hello, world
i=-1, errno=38
foo: Function not implemented
but not on a regular disk
[root at 2D src]# ./a.out /tmp/fooY
buf: hello, world
i=0, errno=0
foo: Success
I would have expected this to work. I'm running fuse 2.7.3,
glusterfs-1.3.9, and centos 2.6.18-53.1.21.el5 on intel.
My config is 2 servers, and 2 clients (running under vmware), and the
server config is:
volume brick
type storage/posix
option directory /data/export
end-volume
volume locks
type features/posix-locks
option manditory on
subvolumes brick
end-volume
volume server
type protocol/server
option transport-type tcp/server
option auth.ip.brick.allow *
subvolumes brick
end-volume
My client config is:
volume remote1
type protocol/client
option transport-type tcp/client
option remote-host 2A
option remote-subvolume brick
end-volume
volume remote2
type protocol/client
option transport-type tcp/client
option remote-host 2B
option remote-subvolume brick
end-volume
volume mirror0
type cluster/afr
subvolumes remote1 remote2
end-volume
I do see this message during the load, but I understand that it's harmless:
2008-06-18 13:00:21 D [xlator.c:115:xlator_set_type] xlator:
attempt to load file
/usr/local/lib/glusterfs/1.3.9/xlator/features/posix-locks.so
2008-06-18 13:00:21 D [xlator.c:145:xlator_set_type] xlator: dlsym(notify)
on /usr/local/lib/glusterfs/1.3.9/xlator/features/posix-locks.so:
undefined symbol: notify -- neglecting
Thanks in advance,
Dale Johnson
More information about the Gluster-devel
mailing list