Re: dht and rename: how is it supposed to work?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jul 29, 2011 at 08:09:01AM +0000, Emmanuel Dreyfus wrote:
> $ cd /tmp
> $ mkdir i386
> $ ln -s i386 inst.xxx
> $ ln inst.xxx machine
> ln: machine: Operation not permitted
> $ uname
> NetBSD
> 
> I still have to investigate whether NetBSD behavior is compliant with SUSv2.

I checked NetBSD kernel sources. link(2) follows symlink and work on the
final target. This is fine with SUSv2, which does not tell anything about
symlinks for link(2) behavior. I would say that glusterfs makes a wrong
assumption that it can link on a symlink to a directory. 

In order to properly fix this, glusterfs dht rename should resolve
symlinks before doing the rename itself. I can try to make a patch for that
if it is regonised as something to fix in glusterfs. The alternative is to
add a linux_link(2) system call to NetBSD, but I am not sure this
will be acccepted.


> Would it make sense for glusterfs dht to use rename(2) on IA_IFLNK just
> like it does for IA_IFDIR? I mean a change like this:

That propsosed change still breaks: the rename is done but an error
message about failed unlink is presented to the user.

> --- xlators/cluster/dht/src/dht-rename.c.orig
> +++ xlators/cluster/dht/src/dht-rename.c
> @@ -763,9 +763,10 @@
>                  oldloc->path, src_hashed->name, src_cached->name,
>                  newloc->path, dst_hashed->name,
>                  dst_cached ? dst_cached->name : "<nul>");
>  
> -        if (IA_ISDIR (oldloc->inode->ia_type)) {
> +        if (IA_ISDIR (oldloc->inode->ia_type) ||
> +            IA_ISLNK (oldloc->inode->ia_type)) {
>                  dht_rename_dir (frame, this);
>          } else {
>                  local->op_ret = 0;
>                  dht_rename_create_links (frame);
> 
> -- 
> Emmanuel Dreyfus
> manu@xxxxxxxxxx
> 
> _______________________________________________
> Gluster-devel mailing list
> Gluster-devel@xxxxxxxxxx
> https://lists.nongnu.org/mailman/listinfo/gluster-devel

-- 
Emmanuel Dreyfus
manu@xxxxxxxxxx



[Index of Archives]     [Gluster Users]     [Ceph Users]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux