From: Guoqing Jiang Date: Wed, 20 Jan 2016 08:21:25 +0000 (+0800) Subject: util: fix wrong return value of cluster_get_dlmlock X-Git-Tag: mdadm-3.4~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=32539f74d2d51d72b57f2314943ea8e0df6dab41;p=thirdparty%2Fmdadm.git 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 --- diff --git a/util.c b/util.c index f1b0b952..cf9572be 100644 --- a/util.c +++ b/util.c @@ -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)