[Gluster-devel] problem with file locking use fcnt

Krishna Srinivas krishna at zresearch.com
Fri Jun 20 10:38:24 UTC 2008


> volume remote1
>  type protocol/client
>  option transport-type tcp/client
>  option remote-host 2A
>  option remote-subvolume brick
> end-volume

remote-subvolume should be locks, not brick. Same with the
other client config.

Regards
Krishna

On Fri, Jun 20, 2008 at 3:28 PM, Dale Johnson <dale.johnson at gmail.com> wrote:
>
> 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
>
>
> _______________________________________________
> Gluster-devel mailing list
> Gluster-devel at nongnu.org
> http://lists.nongnu.org/mailman/listinfo/gluster-devel





More information about the Gluster-devel mailing list