diff options
author | Guoqing Jiang <gqjiang@suse.com> | 2016-01-20 16:21:25 +0800 |
---|---|---|
committer | NeilBrown <neilb@suse.com> | 2016-01-27 11:43:02 +1100 |
commit | 32539f74d2d51d72b57f2314943ea8e0df6dab41 (patch) | |
tree | 7042cc637f9f3b54e3614c6e592dedf85882be1a | |
parent | 50d72ed4298618c679efd43647dd055527e59b10 (diff) | |
download | mdadm-32539f74d2d51d72b57f2314943ea8e0df6dab41.tar.gz |
util: fix wrong return value of cluster_get_dlmlock
Actually lksb.sb_status means that a node got the lock
or not instead of the return value of dlm_lock.
Signed-off-by: Guoqing Jiang <gqjiang@suse.com>
-rw-r--r-- | util.c | 14 |
1 files changed, 4 insertions, 10 deletions
@@ -142,7 +142,7 @@ int cluster_get_dlmlock(int *lockid) dlm_lock_res->ls = dlm_hooks->create_lockspace(cluster_name, O_RDWR); if (!dlm_lock_res->ls) { pr_err("%s failed to create lockspace\n", cluster_name); - goto out; + return -ENOMEM; } /* Conversions need the lockid in the LKSB */ @@ -157,21 +157,15 @@ int cluster_get_dlmlock(int *lockid) dlm_lock_res, NULL, NULL); if (ret) { pr_err("error %d when get PW mode on lock %s\n", errno, str); - goto out; + dlm_hooks->release_lockspace(cluster_name, dlm_lock_res->ls, 1); + return ret; } /* Wait for it to complete */ poll_for_ast(dlm_lock_res->ls); *lockid = dlm_lock_res->lksb.sb_lkid; - errno = dlm_lock_res->lksb.sb_status; - if (errno) { - pr_err("error %d happened in ast with lock %s\n", errno, str); - goto out; - } - -out: - return ret; + return dlm_lock_res->lksb.sb_status; } int cluster_release_dlmlock(int lockid) |