diff options
-rwxr-xr-x | libglusterfsclient/src/libglusterfsclient-internals.h | 1 | ||||
-rwxr-xr-x | libglusterfsclient/src/libglusterfsclient.c | 11 |
2 files changed, 9 insertions, 3 deletions
diff --git a/libglusterfsclient/src/libglusterfsclient-internals.h b/libglusterfsclient/src/libglusterfsclient-internals.h index bdbdd744ba3..32d4156a96f 100755 --- a/libglusterfsclient/src/libglusterfsclient-internals.h +++ b/libglusterfsclient/src/libglusterfsclient-internals.h @@ -49,6 +49,7 @@ typedef struct libglusterfs_client_ctx { * accessed through this context. */ dev_t fake_fsid; + pid_t pid; }libglusterfs_client_ctx_t; typedef struct signal_handler { diff --git a/libglusterfsclient/src/libglusterfsclient.c b/libglusterfsclient/src/libglusterfsclient.c index 187df1b7625..7ef55393d90 100755 --- a/libglusterfsclient/src/libglusterfsclient.c +++ b/libglusterfsclient/src/libglusterfsclient.c @@ -921,7 +921,7 @@ get_call_frame_for_req (libglusterfs_client_ctx_t *ctx, char d) frame->root->uid = geteuid (); frame->root->gid = getegid (); - frame->root->pid = getpid (); + frame->root->pid = ctx->pid; frame->root->unique = ctx->counter++; return frame; @@ -998,6 +998,7 @@ glusterfs_init (glusterfs_init_params_t *init_ctx, uint32_t fakefsid) ctx->lookup_timeout = init_ctx->lookup_timeout; ctx->stat_timeout = init_ctx->stat_timeout; ctx->fake_fsid = fakefsid; + ctx->pid = getpid (); pthread_mutex_init (&ctx->gf_ctx.lock, NULL); pool = ctx->gf_ctx.pool = CALLOC (1, sizeof (call_pool_t)); @@ -2393,6 +2394,8 @@ libgf_client_open (libglusterfs_client_ctx_t *ctx, op_ret = stub->args.open_cbk.op_ret; errno = stub->args.open_cbk.op_errno; + if (op_ret != -1) + fd_bind (fd); call_stub_destroy (stub); return op_ret; } @@ -2486,6 +2489,8 @@ libgf_client_opendir (libglusterfs_client_ctx_t *ctx, op_ret = stub->args.opendir_cbk.op_ret; errno = stub->args.opendir_cbk.op_errno; + if (op_ret != -1) + fd_bind (fd); call_stub_destroy (stub); out: @@ -2556,7 +2561,7 @@ glusterfs_glh_open (glusterfs_handle_t handle, const char *path, int flags,...) goto out; } - fd = fd_create (loc.inode, 0); + fd = fd_create (loc.inode, ctx->pid); fd->flags = flags; if ((flags & O_CREAT) == O_CREAT) { @@ -5056,7 +5061,7 @@ glusterfs_glh_opendir (glusterfs_handle_t handle, const char *path) goto out; } - dirfd = fd_create (loc.inode, 0); + dirfd = fd_create (loc.inode, ctx->pid); op_ret = libgf_client_opendir (ctx, &loc, dirfd); if (op_ret == -1) { |