summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--xlators/cluster/stripe/src/stripe.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/xlators/cluster/stripe/src/stripe.c b/xlators/cluster/stripe/src/stripe.c
index 5dc3dd8b61d..66f2e0b90b3 100644
--- a/xlators/cluster/stripe/src/stripe.c
+++ b/xlators/cluster/stripe/src/stripe.c
@@ -2277,6 +2277,7 @@ stripe_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
{
int32_t callcnt = 0;
stripe_local_t *local = frame->local;
+ fd_t *local_fd = NULL;
LOCK (&frame->lock);
{
@@ -2297,8 +2298,11 @@ stripe_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
UNLOCK (&frame->lock);
if (!callcnt) {
+ local_fd = local->fd;
STACK_UNWIND (frame, local->op_ret, local->op_errno,
local->fd);
+ if (local_fd)
+ fd_unref (local_fd);
}
return 0;
@@ -2338,6 +2342,7 @@ stripe_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd)
}
frame->local = local;
local->call_count = priv->child_count;
+ local->fd = fd_ref (fd);
while (trav) {
STACK_WIND (frame, stripe_opendir_cbk, trav->xlator,