From 9555e5ee7dd2c3a2c98cf505bb198e453ea747d1 Mon Sep 17 00:00:00 2001 From: Pavan Sondur Date: Fri, 1 Oct 2010 01:42:46 +0000 Subject: cluster/afr: Recover locks on child_up from source to sink. Signed-off-by: Pavan Vilas Sondur Signed-off-by: Vijay Bellur BUG: 865 (Add locks recovery support in GlusterFS) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=865 --- xlators/cluster/afr/src/afr-common.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'xlators/cluster/afr/src/afr-common.c') diff --git a/xlators/cluster/afr/src/afr-common.c b/xlators/cluster/afr/src/afr-common.c index 9d9f5d0414d..e5a7e87c72f 100644 --- a/xlators/cluster/afr/src/afr-common.c +++ b/xlators/cluster/afr/src/afr-common.c @@ -1450,8 +1450,24 @@ out: int afr_release (xlator_t *this, fd_t *fd) { + afr_locked_fd_t *locked_fd = NULL; + afr_locked_fd_t *tmp = NULL; + afr_private_t *priv = NULL; + + priv = this->private; + afr_cleanup_fd_ctx (this, fd); + list_for_each_entry_safe (locked_fd, tmp, &priv->saved_fds, + list) { + + if (locked_fd->fd == fd) { + list_del_init (&locked_fd->list); + GF_FREE (locked_fd); + } + + } + return 0; } @@ -2523,6 +2539,8 @@ afr_notify (xlator_t *this, int32_t event, case GF_EVENT_CHILD_UP: i = find_child_index (this, data); + afr_attempt_lock_recovery (this, i); + child_up[i] = 1; LOCK (&priv->lock); -- cgit