[Gluster-devel] 3.4.0beta2 crash in conservative merge?

Vijay Bellur vbellur at redhat.com
Sun May 26 08:03:02 UTC 2013


On 05/26/2013 01:05 PM, Emmanuel Dreyfus wrote:
> Emmanuel Dreyfus <manu at netbsd.org> wrote:
>
>> See my other post: it crashes on line 818, because local->fd is NULL..
>> Since it was used at line 804 without crashing, it must be a race
>> conditon.
>
> I do not really know what I am doing, but I am trying this:
>
> --- xlators/cluster/dht/src/dht-helper.c.orig   2013-05-26 09:29:52.000000000 +0200
> +++ xlators/cluster/dht/src/dht-helper.c        2013-05-26 09:30:47.000000000 +0200
> @@ -798,17 +798,8 @@
>
>           local->cached_subvol = dst_node;
>           ret = 0;
>
> -        /* once we detect the migration complete, the fd-ctx is no more
> -           required.. delete the ctx, and do one extra 'fd_unref' for open fd */
> -        ret = fd_ctx_del (local->fd, this, NULL);
> -        if (!ret) {
> -                fd_unref (local->fd);
> -                ret = 0;
> -                goto out;
> -        }
> -
>           /* perform open as root:root. There is window between linkfile
>            * creation(root:root) and setattr with the correct uid/gid
>            */
>           SYNCTASK_SETID(0, 0);
> @@ -834,8 +825,17 @@
>                           local->loc.path, dst_node->name);
>                   goto out;
>           }
>
> +        /* once we detect the migration complete, the fd-ctx is no more
> +           required.. delete the ctx, and do one extra 'fd_unref' for open fd */
> +        ret = fd_ctx_del (local->fd, this, NULL);
> +        if (!ret) {
> +                fd_unref (local->fd);
> +                ret = 0;
> +                goto out;
> +        }
> +


This patch in master could address the problem:

http://review.gluster.org/#/c/4974

Can you please check if it does and we can then have a backport to 
release-3.4?

Thanks,
Vijay





More information about the Gluster-devel mailing list