[Gluster-devel] weird response of gluster_readdir

Dongmin Yu min at hostway.co.kr
Fri Jul 31 14:36:29 UTC 2009


Thanks for the quick response,

Yes, I called glusterfs_mount at startup and the test directory and file
were created through glusterfs_mkdir/glusterfs_write.
Also I've no idea about the booster yet, I didn't activate the booster.
To be sure, I inspected LD_PRELOAD environment variable and also checked
link with ldd but boost didn't seem to be enabled..

I'm using distribute configuration and here're configurations. 

<client configuration>
volume client01
 type protocol/client
 option transport-type tcp
 option remote-host 10.30.3.15
 option remote-port 6996
 option username hwuser
 option password otepass
 option remote-subvolume brick01
end-volume

volume client02
 type protocol/client
 option transport-type tcp
 option remote-host 10.30.3.15
 option remote-port 6996
 option username hwuser
 option password otepass
 option remote-subvolume brick02
end-volume

volume client03
 type protocol/client
 option transport-type tcp
 option remote-host 10.30.3.22
 option remote-port 6996
 option username hwuser
 option password otepass
 option remote-subvolume brick01
end-volume

volume client04
 type protocol/client
 option transport-type tcp
 option remote-host 10.30.3.22
 option remote-port 6996
 option username hwuser
 option password otepass
 option remote-subvolume brick02
end-volume

volume client05
 type protocol/client
 option transport-type tcp
 option remote-host 10.30.3.21
 option remote-port 6996
 option username hwuser
 option password otepass
 option remote-subvolume brick01
end-volume

volume client06
 type protocol/client
 option transport-type tcp
 option remote-host 10.30.3.21
 option remote-port 6996
 option username hwuser
 option password otepass
 option remote-subvolume brick02
end-volume

volume distribute
  type cluster/distribute
  subvolumes client01 client02 client03 client04 client05 client06
end-volume

<one of server volumes and others are same>
volume posix01
 type storage/posix
 option directory /home/export
end-volume

volume posix02
 type storage/posix
 option directory /home2/export
end-volume

volume locks01
  type features/locks
  subvolumes posix01
end-volume

volume locks02
  type features/locks
  subvolumes posix02
end-volume

volume brick01
  type performance/io-threads
option thread-count 8
  subvolumes locks01
end-volume

volume brick02
  type performance/io-threads
  option thread-count 8
  subvolumes locks02
end-volume

volume server
 type protocol/server
 subvolumes brick01 brick02
 option transport-type tcp
 option auth.login.brick01.allow hwuser
 option auth.login.brick02.allow hwuser
 option auth.login.hwuser.password otepass
 #option auth.addr.brick01.allow *
 #option auth.addr.brick02.allow *
end-volume

And I attach my test program.

Thanks


DongMin Yu
 
HOSTWAY IDC Corp. / R&D Principal Researcher
TEL. +822 2105 6037
FAX. +822 2105 6019
CELL. +8216 2086 1357
EMAIL: min.yu at hostwaycorp.com 
Website: http://www.hostway.com 
 
NOTICE:  This email and any file transmitted are confidential and/or
legally privileged and intended only for the person(s) directly
addressed.  If you are not the intended recipient, any use, copying,
transmission, distribution, or other forms of dissemination is strictly
prohibited.  If you have received this email in error, please notify the
sender immediately and permanently delete the email and files, if any.
-----Original Message-----
From: Shehjar Tikoo [mailto:shehjart at gluster.com] 
Sent: Friday, July 31, 2009 9:34 PM
To: Dongmin Yu
Cc: gluster-devel at nongnu.org
Subject: Re: [Gluster-devel] weird response of gluster_readdir

Dongmin Yu wrote:
> Hello,
> 
>  
> 
> I'm using glusterfs-2.0.4 and building a c-program with
libglusterfsclient.
> 
>  
> 
> I've created a directory, 'test' and wrote a file, 'hello.txt', to the

> directory on glusterfs mounted volume.
> 
> Then I wanted to list all the files/sub-directories in the directory.
> 
>  
> 
> My code was as followings,
> 
>  
> 
> ======
> 
> struct dirent *dirp = NULL;
> 
> glusterfs_dir_t dirfd = NULL;
> 
> char *path = "/gfs_mount/test/";
> 
>  
> 
> dirfd = glusterfs_opendir(path);
> 

Before you can use libglusterfsclient API, you need to set up
a few things using the glusterfs_mount call. If that wasnt done,
glusterfs_opendir should have returned a NULL, thats the first
bug here I think. Can you confirm if you called glusterfs_mount
in the full program?

Have you looked at booster? It is a library that you LD_PRELOAD
under your regular applications so that file system access
happens over libglusterfsclient, without the need to adapt
apps to libglusterfsclient.
For more info, see 
http://www.gluster.org/docs/index.php/BoosterConfiguration

-Shehjar

> while( (dirp = glusterfs_readdir(dirfd) != NULL) ){
> 
> printf("## %s %d %d\n", dirp->d_name, dirp->d_type, dirp->d_reclen  );
> 
>         for( i = 0 ; i < 256; i++ ){
> 
>             printf("%d ", dirp->d_name[i]);
> 
>         }
> 
>         printf("\n");}
> 
> glusterfs_closedir(dirfd);
> 
> =====
> 
>  
> 
> What I expected result was,
> 
> ## Hello.txt 8 24
> 
> ## . 4 16
> 
> ## .. 4 16
> 
>  
> 
> But
> 
> ##  0 74
> 
> 0 0 0 0 0 0 0 0 46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 
> 0 0 0 0
> 
> ##  0 24578
> 
> 0 0 0 0 0 0 0 0 46 46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 
> 0 0 0 0 0
> 
> ## | 135 48751
> 
> 124 0 0 0 0 0 0 0 104 101 108 108 111 46 116 120 116 0 0 0 0 0 0 0 0 0
0 
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 
> 0 0 0 0 0 0 0 0 0 0 0 0 0
> 
>  
> 
> As you see, first 8 bytes has garbage data and d_type value is not
correct.
> 
>  
> 
> Is it a bug of readdir or am I mis-using the library?
> 
>  
> 
> Thanks
> 
>  
> 
> *DongMin Yu*
> 
>  
> 
> HOSTWAY IDC Corp. / R&D Principal Researcher
> 
> TEL. +822 2105 6037
> 
> FAX. +822 2105 6019
> 
> CELL. +8216 2086 1357
> 
> EMAIL: min.yu at hostwaycorp.com <mailto:min.yu at hostwaycorp.com>
> 
> Website: http://www.hostway.com
> 
>  
> 
> *NOTICE:  This email and any file transmitted are confidential and/or 
> legally privileged and intended only for the person(s) directly 
> addressed.  If you are not the intended recipient, any use, copying, 
> transmission, distribution, or other forms of dissemination is
strictly 
> prohibited.  If you have received this email in error, please notify
the 
> sender immediately and permanently delete the email and files, if
any.*
> 
> 
>
------------------------------------------------------------------------
> 
> _______________________________________________
> Gluster-devel mailing list
> Gluster-devel at nongnu.org
> http://lists.nongnu.org/mailman/listinfo/gluster-devel

-------------- next part --------------
A non-text attachment was scrubbed...
Name: main.c
Type: application/octet-stream
Size: 1677 bytes
Desc: main.c
URL: <http://supercolony.gluster.org/pipermail/gluster-devel/attachments/20090731/2a1631ba/attachment-0003.obj>


More information about the Gluster-devel mailing list