[Gluster-devel] Issues with replacing hard links with symlinks in the .glusterfs directory
Vijay Bellur
vbellur at redhat.com
Fri Oct 23 17:57:28 UTC 2015
On Friday 23 October 2015 07:28 AM, Marty Rosenberg wrote:
> First off: I've based my work off of the release of 3.7.3, since it was
> the most recent release when I started this project, and I couldn't get
> HEAD to build on freebsd. (I'm using a freebsd server, and linux clients)
>
> I realize that many things will be broken by doing this (renaming open
> files, deleting open files, possibly some other stuff), but I can live
> with those limitations.
>
> What I've done:
> I've modified the code to failback to a symlink if making a hardlink
> fails (which it will do somewhat frequently due to being on a different
> filesystem).
> I created an extended property on symlinks that are emulating hard links
> changed the setattr code to check this before it tries to set the
> attributs, and if it is set, it dereferences the link, then proceeds
> with the setattr
>
> To test this, I made a file, and ran chmod +x on it
> the good: attributes were correctly set on the file!
> the bad: chmod says it failed with EIO
> my issue: I have no clue where this EIO is coming from. Under the
> hood,s chmod is calling fchmodat
>
> After no luck with printf debugging, I just ran gluster under gdb, and
> set a breakpoint on send_fuse_iov. Here's the backtrace:
> #0 send_fuse_iov (this=0x63a150, finh=0x7fffe0005fe0,
> iov_out=0x7ffff08e7500, count=2) at fuse-bridge.c:158
> #1 0x00007ffff550fcfd in send_fuse_data (this=0x63a150,
> finh=0x7fffe0005fe0, data=0x7ffff08e75a0, size=104) at fuse-bridge.c:197
> #2 0x00007ffff5511be1 in fuse_attr_cbk (frame=0x7fffe000145c,
> cookie=0x7fffe000616c, this=0x63a150, op_ret=0, op_errno=117,
> buf=0x7fffe0006734, xdata=0x0) at fuse-bridge.c:734
Can you break at fuse_setattr_cbk() and check the backtrace? That could
provide more relevant information for the chmod failure.
Regards,
Vijay
More information about the Gluster-devel
mailing list