diff options
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-locks.c | 56 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-mgmt-handler.c | 22 |
2 files changed, 48 insertions, 30 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-locks.c b/xlators/mgmt/glusterd/src/glusterd-locks.c index f0658da3a..0737a731e 100644 --- a/xlators/mgmt/glusterd/src/glusterd-locks.c +++ b/xlators/mgmt/glusterd/src/glusterd-locks.c @@ -169,9 +169,10 @@ glusterd_multiple_volumes_lock (dict_t *dict, uuid_t uuid) ret = glusterd_volume_lock (volname, uuid); if (ret) { gf_log ("", GF_LOG_ERROR, - "Failed to acquire lock for %s. " - "Unlocking other volumes locked " - "by this transaction", volname); + "Failed to acquire lock for %s " + "on behalf of %s. Unlocking " + "other volumes locked by this " + "transaction", volname, uuid_utoa(uuid)); break; } locked_volcount ++; @@ -214,23 +215,27 @@ glusterd_volume_lock (char *volname, uuid_t uuid) uuid_t owner = {0}; if (!volname) { - gf_log ("", GF_LOG_ERROR, "volname is null."); + gf_log (THIS->name, GF_LOG_ERROR, "volname is null."); ret = -1; goto out; } + gf_log (THIS->name, GF_LOG_TRACE, + "Trying to acquire lock of %s for %s", + volname, uuid_utoa (uuid)); + ret = glusterd_get_vol_lock_owner (volname, &owner); if (ret) { - gf_log ("", GF_LOG_DEBUG, "Unable to get volume lock owner"); + gf_log (THIS->name, GF_LOG_DEBUG, + "Unable to get volume lock owner"); goto out; } /* If the lock has already been held for the given volume * we fail */ if (!uuid_is_null (owner)) { - gf_log ("", GF_LOG_ERROR, "Unable to acquire lock. " - "Lock for %s held by %s", volname, - uuid_utoa (owner)); + gf_log (THIS->name, GF_LOG_ERROR, "Lock for %s held by %s", + volname, uuid_utoa (owner)); ret = -1; goto out; } @@ -244,21 +249,22 @@ glusterd_volume_lock (char *volname, uuid_t uuid) uuid_copy (lock_obj->lock_owner, uuid); - ret = dict_set_bin (vol_lock, volname, lock_obj, sizeof(vol_lock_obj)); + ret = dict_set_bin (vol_lock, volname, lock_obj, + sizeof(vol_lock_obj)); if (ret) { - gf_log ("", GF_LOG_ERROR, "Unable to set lock owner " - "in volume lock"); + gf_log (THIS->name, GF_LOG_ERROR, + "Unable to set lock owner in volume lock"); if (lock_obj) GF_FREE (lock_obj); goto out; } - gf_log ("", GF_LOG_DEBUG, "Lock for %s successfully held by %s", + gf_log (THIS->name, GF_LOG_DEBUG, "Lock for %s successfully held by %s", volname, uuid_utoa (uuid)); ret = 0; out: - gf_log ("", GF_LOG_DEBUG, "Returning %d", ret); + gf_log (THIS->name, GF_LOG_TRACE, "Returning %d", ret); return ret; } @@ -269,37 +275,45 @@ glusterd_volume_unlock (char *volname, uuid_t uuid) uuid_t owner = {0}; if (!volname) { - gf_log ("", GF_LOG_ERROR, "volname is null."); + gf_log (THIS->name, GF_LOG_ERROR, "volname is null."); ret = -1; goto out; } + gf_log (THIS->name, GF_LOG_TRACE, "Trying to release lock of %s for %s", + volname, uuid_utoa (uuid)); + ret = glusterd_get_vol_lock_owner (volname, &owner); - if (ret) + if (ret) { + gf_log (THIS->name, GF_LOG_DEBUG, + "Unable to get volume lock owner"); goto out; + } if (uuid_is_null (owner)) { - gf_log ("", GF_LOG_ERROR, "Lock for %s not held", volname); + gf_log (THIS->name, GF_LOG_ERROR, + "Lock for %s not held", volname); ret = -1; goto out; } ret = uuid_compare (uuid, owner); if (ret) { - gf_log ("", GF_LOG_ERROR, "Lock for %s held by %s. " - "Unlock req received from %s", volname, - uuid_utoa (owner), uuid_utoa (uuid)); + + gf_log (THIS->name, GF_LOG_ERROR, "Lock owner mismatch. " + "Lock for %s held by %s", + volname, uuid_utoa (owner)); goto out; } /* Removing the volume lock from the global list */ dict_del (vol_lock, volname); - gf_log ("", GF_LOG_DEBUG, "Lock for %s successfully released", + gf_log (THIS->name, GF_LOG_DEBUG, "Lock for %s successfully released", volname); ret = 0; out: - gf_log ("", GF_LOG_DEBUG, "Returning %d", ret); + gf_log (THIS->name, GF_LOG_TRACE, "Returning %d", ret); return ret; } diff --git a/xlators/mgmt/glusterd/src/glusterd-mgmt-handler.c b/xlators/mgmt/glusterd/src/glusterd-mgmt-handler.c index 236d9b72f..2ebe372cc 100644 --- a/xlators/mgmt/glusterd/src/glusterd-mgmt-handler.c +++ b/xlators/mgmt/glusterd/src/glusterd-mgmt-handler.c @@ -63,6 +63,8 @@ glusterd_syctasked_volume_lock (rpcsvc_request_t *req, this = THIS; GF_ASSERT (this); GF_ASSERT (req); + GF_ASSERT (ctx); + GF_ASSERT (ctx->dict); ret = dict_get_int32 (ctx->dict, "volcount", &volcount); if (ret) { @@ -72,21 +74,22 @@ glusterd_syctasked_volume_lock (rpcsvc_request_t *req, "Failed to get volname"); goto out; } - ret = glusterd_volume_lock (volname, MY_UUID); + ret = glusterd_volume_lock (volname, ctx->uuid); if (ret) gf_log (this->name, GF_LOG_ERROR, "Unable to acquire local lock for %s", volname); } else { /* Trying to acquire volume locks on multiple volumes */ - ret = glusterd_multiple_volumes_lock (ctx->dict, MY_UUID); + ret = glusterd_multiple_volumes_lock (ctx->dict, ctx->uuid); if (ret) gf_log ("", GF_LOG_ERROR, - "Failed to acquire volume locks on localhost"); + "Failed to acquire volume locks for %s", + uuid_utoa (ctx->uuid)); } out: - glusterd_mgmt_v3_vol_lock_send_resp (req, ret); + ret = glusterd_mgmt_v3_vol_lock_send_resp (req, ret); gf_log (this->name, GF_LOG_TRACE, "Returning %d", ret); return ret; @@ -749,20 +752,21 @@ glusterd_syctasked_volume_unlock (rpcsvc_request_t *req, "Failed to get volname"); goto out; } - ret = glusterd_volume_unlock (volname, MY_UUID); + ret = glusterd_volume_unlock (volname, ctx->uuid); if (ret) gf_log (this->name, GF_LOG_ERROR, - "Unable to acquire local lock for %s", volname); + "Unable to release lock for %s", volname); } else { /* Trying to release volume locks on multiple volumes */ - ret = glusterd_multiple_volumes_unlock (ctx->dict, MY_UUID); + ret = glusterd_multiple_volumes_unlock (ctx->dict, ctx->uuid); if (ret) gf_log ("", GF_LOG_ERROR, - "Failed to release volume locks on localhost"); + "Failed to release volume locks for %s", + uuid_utoa(ctx->uuid)); } out: - glusterd_mgmt_v3_vol_unlock_send_resp (req, ret); + ret = glusterd_mgmt_v3_vol_unlock_send_resp (req, ret); gf_log (this->name, GF_LOG_TRACE, "Returning %d", ret); return ret; |