diff options
Diffstat (limited to 'xlators/cluster/dht/src/dht-common.c')
| -rw-r--r-- | xlators/cluster/dht/src/dht-common.c | 9 | 
1 files changed, 9 insertions, 0 deletions
diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c index 99cf6f787a3..802bd5a49ee 100644 --- a/xlators/cluster/dht/src/dht-common.c +++ b/xlators/cluster/dht/src/dht-common.c @@ -3876,6 +3876,15 @@ dht_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          ret = dht_layout_merge (this, layout, prev->this,                                                  -1, ENOSPC, NULL);                  } else { +			if (op_ret == -1 && op_errno == EEXIST) +				/* Very likely just a race between mkdir and +				   self-heal (from lookup of a concurrent mkdir +				   attempt). +				   Ignore error for now. layout setting will +				   anyways fail if this was a different (old) +				   pre-existing different directory. +				*/ +				op_ret = 0;                          ret = dht_layout_merge (this, layout, prev->this,                                                  op_ret, op_errno, NULL);                  }  | 
