]> git.proxmox.com Git - mirror_corosync.git/commitdiff
Improve the async version of locking library patch from Xinwei Hu.
authorSteven Dake <sdake@redhat.com>
Mon, 23 Jun 2008 22:42:42 +0000 (22:42 +0000)
committerSteven Dake <sdake@redhat.com>
Mon, 23 Jun 2008 22:42:42 +0000 (22:42 +0000)
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1557 fd59a12c-fef9-0310-b244-a6a79926bd2f

exec/lck.c
lib/lck.c

index a22a7a8cf5ecb291fa650c835735fc74b0498fb8..84c112452881400b5a94d925e7486ed213a3f212 100644 (file)
@@ -1287,11 +1287,11 @@ error_exit:
                        res_lib_lck_resourceunlockasync.lockId = req_exec_lck_resourceunlock->lock_id;
 
                        openais_conn_send_response (
-                               openais_conn_partner_get(req_exec_lck_resourceunlock->source.conn),
+                               req_exec_lck_resourceunlock->source.conn,
                                &res_lib_lck_resourceunlockasync,
                                sizeof (struct res_lib_lck_resourceunlockasync));
                        openais_conn_send_response (
-                               openais_conn_partner_get(resource_lock->callback_source.conn),
+                               openais_conn_partner_get(req_exec_lck_resourceunlock->source.conn),
                                &res_lib_lck_resourceunlockasync,
                                sizeof (struct res_lib_lck_resourceunlockasync));
                } else {
@@ -1419,6 +1419,7 @@ static void message_handler_req_lib_lck_resourceopenasync (
        req_exec_lck_resourceopen.resource_handle = req_lib_lck_resourceopen->resourceHandle;
        req_exec_lck_resourceopen.invocation = req_lib_lck_resourceopen->invocation;
        req_exec_lck_resourceopen.open_flags = req_lib_lck_resourceopen->resourceOpenFlags;
+       req_exec_lck_resourceopen.fail_with_error = SA_AIS_OK;
        req_exec_lck_resourceopen.timeout = 0;
        req_exec_lck_resourceopen.async_call = 1;
 
@@ -1532,6 +1533,7 @@ static void message_handler_req_lib_lck_resourcelockasync (
        req_exec_lck_resourcelock.resource_handle = req_lib_lck_resourcelock->resourceHandle;
        req_exec_lck_resourcelock.async_call = 1;
        req_exec_lck_resourcelock.invocation = req_lib_lck_resourcelock->invocation;
+       req_exec_lck_resourcelock.fail_with_error = SA_AIS_OK;
 
        iovecs[0].iov_base = (char *)&req_exec_lck_resourcelock;
        iovecs[0].iov_len = sizeof (req_exec_lck_resourcelock);
index cb593fe9e768f1cb5f84c416810323837f7e679f..d8538ca5f05695cf8454af90cd96d9b1a05172d9 100644 (file)
--- a/lib/lck.c
+++ b/lib/lck.c
@@ -463,6 +463,9 @@ saLckDispatch (
                                        res_lib_lck_resourceopenasync->invocation,
                                        res_lib_lck_resourceopenasync->resourceHandle,
                                        res_lib_lck_resourceopenasync->header.error);
+                               memcpy (&lckResourceInstance->source,
+                                               &res_lib_lck_resourceopenasync->source,
+                                               sizeof (mar_message_source_t));
                                saHandleInstancePut (&lckResourceHandleDatabase,
                                        res_lib_lck_resourceopenasync->resourceHandle);
                        } else {
@@ -756,6 +759,8 @@ saLckResourceOpenAsync (
        lckResourceInstance->lckResourceHandle = lckResourceHandle;
        lckResourceInstance->resourceOpenFlags = resourceOpenFlags;
 
+       marshall_to_mar_name_t (&req_lib_lck_resourceopen.lockResourceName, 
+                       (SaNameT *)lockResourceName);
        memcpy (&lckResourceInstance->lockResourceName, lockResourceName, sizeof (SaNameT));
        req_lib_lck_resourceopen.header.size = sizeof (struct req_lib_lck_resourceopen);
        req_lib_lck_resourceopen.header.id = MESSAGE_REQ_LCK_RESOURCEOPENASYNC;