[Gluster-devel] Problem with replicate on XFS

JV jamson at megatek.lv
Wed May 13 10:08:02 UTC 2009


Hello.
There seems to be a problem with repliacte on XFS backends.
It works fine with ext4, but fails on xfs.

I cannot create deep directory trees (more than 2 levels), it always fails.

As far as I can tell  problem arises from ino_t being of type "long long unsigned int", but fuse_ino_t is only "long unsigned int".



Relevant portions of client debug log, when doing ls -l on /mnt/glusterfs-test/temp/

Structure should be /mnt/glusterfs-test/temp/archive3/2009/....

Directory archive3 gets created on bricks.

2009-05-13 12:54:11 D [fuse-bridge.c:2496:fuse_root_lookup_cbk] fuse: first lookup on root succeeded.
2009-05-13 12:54:11 D [fuse-bridge.c:453:fuse_lookup] glusterfs-fuse: 2: LOOKUP /temp
2009-05-13 12:54:11 D [inode.c:487:__inode_create] fuse/inode: create inode(0)
2009-05-13 12:54:11 D [inode.c:309:__inode_activate] fuse/inode: activating inode(0), lru=0/0 active=2 purge=0
2009-05-13 12:54:11 D [fuse-bridge.c:368:fuse_entry_cbk] glusterfs-fuse: 2: LOOKUP() /temp => 264 (0)
2009-05-13 12:54:11 D [inode.c:94:__dentry_hash] fuse/inode: dentry hashed temp (264)
2009-05-13 12:54:11 D [inode.c:328:__inode_passivate] fuse/inode: passivating inode(264) lru=1/0 active=1 purge=0
2009-05-13 12:54:11 D [inode.c:309:__inode_activate] fuse/inode: activating inode(264), lru=0/0 active=2 purge=0
2009-05-13 12:54:11 D [fuse-bridge.c:2229:fuse_getxattr] glusterfs-fuse: 3: GETXATTR /temp/264 (security.selinux)
2009-05-13 12:54:11 D [fuse-bridge.c:2064:fuse_xattr_cbk] glusterfs-fuse: 3: GETXATTR() /temp => 0
2009-05-13 12:54:11 D [inode.c:328:__inode_passivate] fuse/inode: passivating inode(264) lru=1/0 active=1 purge=0
2009-05-13 12:54:11 D [inode.c:309:__inode_activate] fuse/inode: activating inode(264), lru=0/0 active=2 purge=0
2009-05-13 12:54:11 D [fuse-bridge.c:1750:fuse_opendir] glusterfs-fuse: 6: OPENDIR /temp
2009-05-13 12:54:11 D [fuse-bridge.c:652:fuse_fd_cbk] glusterfs-fuse: 6: OPENDIR() /temp => 0x81926c0
2009-05-13 12:54:11 D [fuse-bridge.c:1837:fuse_readdir] glusterfs-fuse: 7: READDIR (0x81926c0, size=4096, offset=0)
2009-05-13 12:54:11 D [fuse-bridge.c:1783:fuse_readdir_cbk] glusterfs-fuse: 7: READDIR => 3/4096,0
2009-05-13 12:54:11 D [fuse-bridge.c:607:fuse_getattr] glusterfs-fuse: 8: GETATTR 264 (/temp)
2009-05-13 12:54:11 D [fuse-bridge.c:523:fuse_attr_cbk] glusterfs-fuse: 8: STAT() /temp => 264
2009-05-13 12:54:11 D [fuse-bridge.c:2229:fuse_getxattr] glusterfs-fuse: 9: GETXATTR /temp/264 (security.selinux)
2009-05-13 12:54:11 D [fuse-bridge.c:2064:fuse_xattr_cbk] glusterfs-fuse: 9: GETXATTR() /temp => 0
2009-05-13 12:54:11 D [fuse-bridge.c:368:fuse_entry_cbk] glusterfs-fuse: 12: LOOKUP() / => 1 (1)
2009-05-13 12:54:11 D [fuse-bridge.c:2229:fuse_getxattr] glusterfs-fuse: 13: GETXATTR //1 (security.selinux)
2009-05-13 12:54:11 D [fuse-bridge.c:2064:fuse_xattr_cbk] glusterfs-fuse: 13: GETXATTR() / => 0
2009-05-13 12:54:11 D [fuse-bridge.c:453:fuse_lookup] glusterfs-fuse: 16: LOOKUP /temp/archive3
2009-05-13 12:54:11 D [inode.c:487:__inode_create] fuse/inode: create inode(0)
2009-05-13 12:54:11 D [inode.c:309:__inode_activate] fuse/inode: activating inode(0), lru=0/0 active=3 purge=0
2009-05-13 12:54:11 D [fuse-bridge.c:368:fuse_entry_cbk] glusterfs-fuse: 16: LOOKUP() /temp/archive3 => 4296016129 (0)
2009-05-13 12:54:11 D [inode.c:94:__dentry_hash] fuse/inode: dentry hashed archive3 (4296016129)
2009-05-13 12:54:11 D [inode.c:328:__inode_passivate] fuse/inode: passivating inode(4296016129) lru=1/0 active=2 purge=0
2009-05-13 12:54:11 E [fuse-bridge.c:279:fuse_loc_fill] fuse-bridge: failed to search parent for 0/(null) (1048833)
2009-05-13 12:54:11 E [fuse-bridge.c:2220:fuse_getxattr] glusterfs-fuse: 17: GETXATTR (null)/1048833 (security.selinux) (fuse_loc_fill() failed)
2009-05-13 12:54:11 D [fuse-bridge.c:1837:fuse_readdir] glusterfs-fuse: 18: READDIR (0x81926c0, size=4096, offset=512)
2009-05-13 12:54:11 D [fuse-bridge.c:1783:fuse_readdir_cbk] glusterfs-fuse: 18: READDIR => 0/4096,512
2009-05-13 12:54:11 D [fuse-bridge.c:1855:fuse_releasedir] glusterfs-fuse: 19: RELEASEDIR 0x81926c0


As far as I can tell problematic lines are:


2009-05-13 12:54:11 D [fuse-bridge.c:368:fuse_entry_cbk] glusterfs-fuse: 16: LOOKUP() /temp/archive3 => 4296016129 (0)
Which clearly tells us that inode is 4296016129

2009-05-13 12:54:11 E [fuse-bridge.c:279:fuse_loc_fill] fuse-bridge: failed to search parent for 0/(null) (1048833)
Which tels us that fuse_loc_fill gets inode as 1048833

4296016129 - (max long unsigned int)4294967295 == 1048834




Nothing of interest is in configs - just plain export/locks on server and import/replicate on client.

Kernel is 2.6.29.1, gcc 4.3 from debian stable

Im I right assuming that problem with variable types couses this behaviour?

JV





More information about the Gluster-devel mailing list