Emmanuel Dreyfus <manu@xxxxxxxxxx> 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; + } + ret = 0; out: return ret; -- Emmanuel Dreyfus http://hcpnet.free.fr/pubz manu@xxxxxxxxxx