Hi all,
  The attached patch is a try to improve the async version of lck library.

  I've tested it with test/testlck so far.

  Please help to review it. Thanks.
diff -Nru openais/exec/lck.c openais-modify/exec/lck.c
--- openais/exec/lck.c	2008-01-02 08:51:12.000000000 -0500
+++ openais-modify/exec/lck.c	2008-05-13 07:12:15.000000000 -0400
@@ -1287,11 +1287,11 @@
 			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 @@
 	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 @@
 	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);
diff -Nru openais/lib/lck.c openais-modify/lib/lck.c
--- openais/lib/lck.c	2008-01-02 08:51:12.000000000 -0500
+++ openais-modify/lib/lck.c	2008-05-13 07:13:34.000000000 -0400
@@ -463,6 +463,9 @@
 					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 @@
 	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;
_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to