From b976536e616e6dd23dd4a3981d150b168f9d2bef Mon Sep 17 00:00:00 2001 From: Shehjar Tikoo Date: Tue, 7 Apr 2009 05:43:31 -0700 Subject: libglusterfsclient: Complete support for rmdir fop glusterfs_rmdir code path wasnt implemented completely. Here is an attempt to complete it. Signed-off-by: Anand V. Avati --- libglusterfsclient/src/libglusterfsclient.c | 40 ++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 4 deletions(-) (limited to 'libglusterfsclient/src/libglusterfsclient.c') diff --git a/libglusterfsclient/src/libglusterfsclient.c b/libglusterfsclient/src/libglusterfsclient.c index e7f47240b..ae0b055ff 100755 --- a/libglusterfsclient/src/libglusterfsclient.c +++ b/libglusterfsclient/src/libglusterfsclient.c @@ -3403,14 +3403,46 @@ out: return op_ret; } - static int32_t -libgf_client_rmdir (libglusterfs_client_ctx_t *ctx, - loc_t *loc) +libgf_client_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno) { - return 0; + libgf_client_local_t *local = frame->local; + + local->reply_stub = fop_rmdir_cbk_stub (frame, NULL, op_ret, op_errno); + + pthread_mutex_lock (&local->lock); + { + local->complete = 1; + pthread_cond_broadcast (&local->reply_cond); + } + pthread_mutex_unlock (&local->lock); + + return 0; } +static int32_t +libgf_client_rmdir (libglusterfs_client_ctx_t *ctx, loc_t *loc) +{ + int32_t op_ret = -1; + call_stub_t *stub = NULL; + libgf_client_local_t *local = NULL; + + LIBGF_CLIENT_FOP (ctx, stub, rmdir, local, loc); + + op_ret = stub->args.rmdir_cbk.op_ret; + errno = stub->args.rmdir_cbk.op_errno; + + if (stub->args.rmdir_cbk.op_ret != 0) + goto out; + + inode_unlink (loc->inode, loc->parent, loc->name); + +out: + call_stub_destroy (stub); + + return op_ret; +} int32_t glusterfs_rmdir (glusterfs_handle_t handle, -- cgit