On 05/26/2013 01:05 PM, Emmanuel Dreyfus wrote:
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;
+ }
+
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