This is the mail archive of the cluster-cvs@sourceware.org mailing list for the cluster.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

master - libdlm: major cleanup


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=4e28e072aa4af4de699865e7b6809fbda98af792
Commit:        4e28e072aa4af4de699865e7b6809fbda98af792
Parent:        dcdbcd10121c1aa04f9ccffe94aacbeb3c366c07
Author:        Fabio M. Di Nitto <fdinitto@redhat.com>
AuthorDate:    Thu Aug 28 10:41:23 2008 +0200
Committer:     Fabio M. Di Nitto <fdinitto@redhat.com>
CommitterDate: Thu Aug 28 10:41:23 2008 +0200

libdlm: major cleanup

Move libaislock to contrib/ as it was not built within libdlm for ages.

Simplify libdlm/Makefile (first pass) and adapt the build system to cope
with %_lt.o.

Fix make/libs.mk to deal with multiple objects linked in a shared
library.

Signed-off-by: Fabio M. Di Nitto <fdinitto@redhat.com>
---
 contrib/Makefile                |    2 +-
 contrib/libaislock/Makefile     |   13 +
 contrib/libaislock/libaislock.c |  466 ++++++++++++++++++++++++++++++++++++++
 contrib/libaislock/libaislock.h |  190 ++++++++++++++++
 dlm/libdlm/Makefile             |   24 +--
 dlm/libdlm/libaislock.c         |  468 ---------------------------------------
 dlm/libdlm/libaislock.h         |  190 ----------------
 fence/agents/xvm/Makefile       |    2 +-
 make/cobj.mk                    |    8 +-
 make/libs.mk                    |    2 +-
 10 files changed, 684 insertions(+), 681 deletions(-)

diff --git a/contrib/Makefile b/contrib/Makefile
index 5504bd1..77a4b96 100644
--- a/contrib/Makefile
+++ b/contrib/Makefile
@@ -2,5 +2,5 @@ include ../make/defines.mk
 include $(OBJDIR)/make/passthrough.mk
 
 ifdef contrib_code
-SUBDIRS=askant
+SUBDIRS=askant libaislock
 endif
diff --git a/contrib/libaislock/Makefile b/contrib/libaislock/Makefile
new file mode 100644
index 0000000..b392d55
--- /dev/null
+++ b/contrib/libaislock/Makefile
@@ -0,0 +1,13 @@
+TARGET= libaislock
+
+include ../../make/defines.mk
+include $(OBJDIR)/make/libs.mk
+include $(OBJDIR)/make/cobj.mk
+include $(OBJDIR)/make/clean.mk
+include $(OBJDIR)/make/install.mk
+include $(OBJDIR)/make/uninstall.mk
+
+CFLAGS += -fPIC
+CFLAGS += -I${incdir}
+
+LDFLAGS += -lpthread
diff --git a/contrib/libaislock/libaislock.c b/contrib/libaislock/libaislock.c
new file mode 100644
index 0000000..82f06ab
--- /dev/null
+++ b/contrib/libaislock/libaislock.c
@@ -0,0 +1,466 @@
+#include <pthread.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/file.h>
+#include <sys/stat.h>
+
+#include <linux/types.h>
+#include <linux/dlm.h>
+#define BUILDING_LIBDLM
+#include "libdlm.h"
+#include "libaislock.h"
+#include <linux/dlm_device.h>
+
+enum {
+	SA_LCK_GRANT_CB = 1,
+	SA_LCK_WAITER_CB = 2,
+};
+
+static struct dlm_ls_info *sa_default_ls = NULL;
+
+inline int lkmode_ais2dlm(SaLckLockModeT mode)
+{
+	switch(mode)
+	{
+	case SA_LCK_PR_LOCK_MODE:
+		return DLM_LOCK_PR;
+	case SA_LCK_EX_LOCK_MODE:
+		return DLM_LOCK_EX;
+	default:
+		return -1;
+	}
+}
+
+inline SaLckLockModeT lkmode_dlm2ais(int mode)
+{
+	switch(mode)
+	{
+	case DLM_LOCK_PR:
+		return SA_LCK_PR_LOCK_MODE;
+	case DLM_LOCK_EX:
+		return SA_LCK_EX_LOCK_MODE;
+	default:
+		return -1;
+	}
+}
+
+inline unsigned long lkflag_ais2dlm(SaLckLockFlagsT flag)
+{
+	unsigned long dlm_flag = 0;
+
+	if(flag & SA_LCK_LOCK_NO_QUEUE)
+		dlm_flag |= DLM_LKF_NOQUEUE;
+	if(flag & SA_LCK_LOCK_ORPHAN)
+		dlm_flag |= DLM_LKF_ORPHAN;
+
+	return dlm_flag;
+}
+
+inline SaLckLockStatusT lkstatus_dlm2ais(int status)
+{
+	switch(status)
+	{
+	case -ENOMEM:
+		return SA_LCK_LOCK_NO_MORE;
+	case 0:
+		return SA_LCK_LOCK_GRANTED;
+	case -EAGAIN:
+		return SA_LCK_LOCK_NOT_QUEUED;
+	default:
+		return -1;
+	}
+}
+
+inline SaErrorT lkerr_dlm2ais(int status)
+{
+	switch(status)
+	{
+	case -EINVAL:
+		return SA_ERR_INVALID_PARAM;
+	case 0:
+		return SA_OK;
+	default:
+		return -1;
+	}
+}
+
+
+SaErrorT
+saLckInitialize(SaLckHandleT *lckHandle, const SaLckCallbacksT *lckCallbacks,
+		const SaVersionT *version)
+{
+	dlm_lshandle_t ls = NULL;
+
+	if (NULL == lckHandle)
+		return SA_ERR_INVALID_PARAM;
+
+	if (lckCallbacks) {
+		lckHandle->callback.saLckLockGrantCallback =
+			lckCallbacks->saLckLockGrantCallback;
+		lckHandle->callback.saLckLockWaiterCallback =
+			lckCallbacks->saLckLockWaiterCallback;
+		lckHandle->callback.saLckResourceUnlockCallback =
+			lckCallbacks->saLckResourceUnlockCallback;
+	} else {
+		lckHandle->callback.saLckLockGrantCallback = NULL;
+		lckHandle->callback.saLckLockWaiterCallback = NULL;
+		lckHandle->callback.saLckResourceUnlockCallback = NULL;
+	}
+	lckHandle->version.releaseCode = version->releaseCode;
+	lckHandle->version.major = version->major;
+	lckHandle->version.minor = version->minor;
+
+	ls = dlm_create_lockspace("sa_default", 0600);
+	if (!ls)
+		return SA_ERR_LIBRARY;
+
+	sa_default_ls = (struct dlm_ls_info *)ls;
+	return SA_OK;
+}
+
+
+SaErrorT
+saLckFinalize(SaLckHandleT *lckHandle)
+{
+	if ( NULL == sa_default_ls ) {
+		return SA_ERR_LIBRARY;
+	}
+
+	if(!dlm_release_lockspace("sa_default", sa_default_ls, 1)) {
+		return SA_OK;
+	} else {
+		return SA_ERR_LIBRARY;
+	}
+}
+
+SaErrorT
+saLckResourceOpen(const SaLckHandleT *lckHandle, const SaNameT *lockName,
+		  SaLckResourceIdT *resourceId)
+{
+	if ( NULL == sa_default_ls ) {
+		return SA_ERR_LIBRARY;
+	}
+
+	if (lockName->length <= 31 ) /* OpenDLM only support namelen <= 31*/
+	{
+		resourceId->name.length = lockName->length;
+		strncpy((char *)resourceId->name.value, (char *)lockName->value, lockName->length);
+	} else {
+		return SA_ERR_NO_MEMORY;
+	}
+
+	return SA_OK;
+}
+
+
+SaErrorT
+saLckResourceClose(SaLckHandleT *lckHandle, SaLckResourceIdT *resourceId)
+{
+	if ( NULL == sa_default_ls ) {
+		return SA_ERR_LIBRARY;
+	}
+
+	return SA_OK;
+}
+
+
+SaErrorT
+saLckSelectionObjectGet(const SaLckHandleT *lckHandle,
+			SaSelectionObjectT *selectionObject)
+{
+	int fd = -1;
+
+	if ( NULL == sa_default_ls ) {
+		return SA_ERR_LIBRARY;
+	}
+
+	fd = dlm_ls_get_fd(sa_default_ls);
+
+	if(!fd)
+		return SA_ERR_LIBRARY;
+
+	*selectionObject = fd;
+
+	return SA_OK;
+}
+
+
+SaErrorT
+saLckDispatch(const SaLckHandleT *lckHandle,
+	      const SaDispatchFlagsT dispatchFlags)
+{
+	int status;
+	int fdflags;
+	char resultbuf[sizeof(struct dlm_lock_result)];
+	struct dlm_lock_result *result = (struct dlm_lock_result *)resultbuf;
+	char *fullresult=NULL;
+	SaLckLockIdT *lkid;
+	SaLckLockModeT lock_mode;
+	int fd = -1;
+
+	if ( NULL == sa_default_ls ) {
+		return SA_ERR_LIBRARY;
+	}
+
+	fd = dlm_ls_get_fd(sa_default_ls);
+
+	if(!fd)
+		return SA_ERR_LIBRARY;
+
+	fdflags = fcntl(fd, F_GETFL, 0);
+	fcntl(fd, F_SETFL,  fdflags | O_NONBLOCK);
+
+	do
+	{
+
+		/* Just read the header first */
+		status = read(fd, result, sizeof(struct dlm_lock_result));
+		if (status <= 0)
+    			break;
+
+		if (result->length != status)
+		{
+        		int newstat;
+
+        		fullresult = malloc(result->length);
+        		if (!fullresult)
+            			break;
+
+        		newstat = read(fd, fullresult, result->length);
+
+			/* If it read OK then use the new data. otherwise we can
+			   still deliver the AST, it just might not have all the
+			   info in it...hmmm */
+			if (newstat == result->length)
+				result = (struct dlm_lock_result *)fullresult;
+		}
+
+		/* Copy lksb to user's buffer - except the LVB ptr */
+		memcpy(result->user_lksb, &result->lksb,
+		       sizeof(struct dlm_lksb) - sizeof(char*));
+
+		/* Flip the status. Kernel space likes negative return codes,
+		   userspace positive ones */
+		result->user_lksb->sb_status = -result->user_lksb->sb_status;
+
+		/* Need not to care LVB*/
+#ifdef QUERY
+		/* Copy optional items */
+		if (result->qinfo_offset)
+		{
+    			/* Just need the lockcount written out here */
+    			struct dlm_queryinfo *qi = (struct dlm_queryinfo *)
+				(fullresult+result->qinfo_offset);
+    			result->user_qinfo->gqi_lockcount = qi->gqi_lockcount;
+		}
+
+		if (result->qresinfo_offset)
+			memcpy(result->user_qinfo->gqi_resinfo,
+			       fullresult+result->qresinfo_offset,
+			       sizeof(struct dlm_resinfo));
+
+		if (result->qlockinfo_offset)
+			memcpy(result->user_qinfo->gqi_lockinfo,
+			       fullresult+result->qlockinfo_offset,
+			       sizeof(struct dlm_lockinfo) *
+			       result->user_qinfo->gqi_lockcount);
+#endif
+ 		/* Call AST */
+		lkid = (SaLckLockIdT *)result->user_astparam;
+		if (lkid->unlock) {
+			/* dispatch unlock ast */
+			lkid->unlock = 0;
+			lkid->held_mode = 0;
+			if(lckHandle->callback.saLckResourceUnlockCallback)
+				lckHandle->callback.
+					saLckResourceUnlockCallback(
+						lkid->args, lkid->resource, lkid,
+						SA_LCK_LOCK_RELEASED, SA_OK);
+
+		} else if (SA_LCK_GRANT_CB == (int)result->user_astaddr) {
+			/* dispatch lock ast */
+			if (0 == lkid->lksb.sb_status) {
+				lkid->held_mode = lkid->requested_mode;
+				lock_mode = lkid->requested_mode;
+			} else {
+				lock_mode = lkid->held_mode;
+			}
+
+			if(lckHandle->callback.saLckLockGrantCallback)
+				lckHandle->callback.
+					saLckLockGrantCallback(
+						lkid->args, lkid->resource,
+						lkid, lock_mode,
+						lkstatus_dlm2ais(
+							lkid->lksb.sb_status),
+						SA_OK);
+		} else if (SA_LCK_WAITER_CB == (int)result->user_astaddr) {
+			/* dispatch waiter ast */
+			if(lckHandle->callback.saLckLockWaiterCallback)
+				lckHandle->callback.
+					saLckLockWaiterCallback(
+						lkid->args, lkid->resource,
+						lkid, lkid->held_mode, result->bast_mode);
+		} else {
+			return SA_ERR_LIBRARY;
+		}
+	} while (0 !=status && SA_DISPATCH_ONE != dispatchFlags);
+
+	/* EAGAIN is not an error */
+	if (status < 0 && errno == EAGAIN)
+                status = 0;
+
+	fcntl(fd, F_SETFL, fdflags);
+    	return SA_OK;
+}
+
+SaErrorT
+SaLckResourceLockAsync(const SaLckHandleT *lckHandle, SaInvocationT invocation,
+		       const SaLckResourceIdT *resourceId, SaLckLockIdT *lockId,
+		       SaLckLockModeT lockMode, SaLckLockFlagsT lockFlags,
+		       SaTimeT timeout)
+{
+	int ret_val;		/* value to be returned from function */
+
+	if ( NULL == sa_default_ls ) {
+		return SA_ERR_LIBRARY;
+	}
+
+	/*FIXME deal with timeout in lock/lockasync/unlock.
+	 */
+	lockId->resource = (SaLckResourceIdT *)resourceId;
+	lockId->requested_mode = lockMode;
+	lockId->args = invocation;
+
+	ret_val = dlm_ls_lock(sa_default_ls, lkmode_ais2dlm(lockMode),
+			      &(lockId->lksb), lkflag_ais2dlm(lockFlags),
+			      (void *)(resourceId->name.value),
+			      resourceId->name.length, 0, (void *)SA_LCK_GRANT_CB,
+			      lockId, (void *)SA_LCK_WAITER_CB, NULL);
+
+	return lkerr_dlm2ais(ret_val);
+}
+
+SaErrorT
+saLckResourceLock(const SaLckHandleT *lckHandle, SaInvocationT invocation,
+		  const SaLckResourceIdT *resourceId, SaLckLockIdT *lockId,
+		  SaLckLockModeT lockMode, SaLckLockFlagsT lockFlags,
+		  SaTimeT timeout, SaLckLockStatusT *lockStatus)
+
+{
+	int ret_val;		/* value to be returned from function */
+
+	if ( NULL == sa_default_ls ) {
+		return SA_ERR_LIBRARY;
+	}
+
+	lockId->resource = (SaLckResourceIdT *)resourceId;
+	lockId->requested_mode = lockMode;
+	lockId->args = invocation;
+
+	ret_val = dlm_ls_lock_wait(sa_default_ls, lkmode_ais2dlm(lockMode),
+				   &(lockId->lksb), lkflag_ais2dlm(lockFlags),
+				   (void *)(resourceId->name.value),
+				   resourceId->name.length, 0, lockId,
+				   (void *)SA_LCK_WAITER_CB, NULL);
+
+	*lockStatus = lkstatus_dlm2ais(lockId->lksb.sb_status);
+	lockId->held_mode = lockId->requested_mode;
+
+	return lkerr_dlm2ais(ret_val);
+}
+
+SaErrorT
+saLckResourceUnlock(const SaLckHandleT *lckHandle, SaLckLockIdT *lockId,
+		    SaTimeT timeout)
+{
+	int ret_val;	/* value to be returned from function */
+
+	if ( NULL == sa_default_ls ) {
+		return SA_ERR_LIBRARY;
+	}
+
+	ret_val = dlm_ls_unlock_wait(sa_default_ls, lockId->lksb.sb_lkid, 0,
+				     &(lockId->lksb));
+	lockId->held_mode = 0;
+
+	return lkerr_dlm2ais(ret_val);
+}
+
+SaErrorT
+saLckResourceUnlockAsync(const SaLckHandleT *lckHandle,
+			 SaInvocationT invocation, SaLckLockIdT *lockId)
+{
+	int ret_val;	/* value to be returned from function */
+
+	if ( NULL == sa_default_ls ) {
+		return SA_ERR_LIBRARY;
+	}
+
+	lockId->unlock = 1;
+	lockId->args = invocation;
+
+
+	ret_val = dlm_ls_unlock(sa_default_ls, lockId->lksb.sb_lkid, 0, &(lockId->lksb),
+				lockId);
+
+	return lkerr_dlm2ais(ret_val);
+}
+
+
+SaErrorT
+saLckLockPurge(const SaLckHandleT *lckHandle,
+	       const SaLckResourceIdT *resourceId)
+{
+#ifdef QUERY
+	int ret_val;	/* value to be returned from function */
+	SaLckLockIdT lockId;
+	struct dlm_lksb lksb;
+	struct dlm_resinfo resinfo;
+	static struct dlm_queryinfo qinfo;
+	struct dlm_lockinfo *p;
+
+	qinfo.gqi_resinfo = &resinfo;
+	qinfo.gqi_lockinfo = malloc(sizeof(struct dlm_lockinfo) * 10);
+	qinfo.gqi_locksize = 10;
+
+
+	if ( NULL == sa_default_ls ) {
+		return SA_ERR_LIBRARY;
+	}
+
+	lockId.resource = (SaLckResourceIdT *)resourceId;
+	lockId.requested_mode = DLM_LOCK_NL;
+
+	ret_val = dlm_ls_lock_wait(sa_default_ls, DLM_LOCK_NL,
+				   &(lockId.lksb), DLM_LKF_EXPEDITE,
+				   (void *)(resourceId->name.value),
+				   resourceId->name.length, 0, &lockId,
+				   (void *)SA_LCK_WAITER_CB, NULL);
+
+	dlm_ls_query_wait(sa_default_ls, &(lockId.lksb),
+			  DLM_QUERY_QUEUE_ALL|DLM_QUERY_LOCKS_ORPHAN, &qinfo);
+
+	for ( p = qinfo.gqi_lockinfo; 0 != p->lki_lkid; p++ ) {
+		lksb.sb_lkid = p->lki_lkid;
+		ret_val = dlm_ls_unlock_wait(sa_default_ls, p->lki_lkid, 0,
+					     &lksb);
+	}
+
+	ret_val = dlm_ls_unlock_wait(sa_default_ls, lockId.lksb.sb_lkid, 0,
+				     &(lockId.lksb));
+
+	return lkerr_dlm2ais(ret_val);
+#else
+	return -1;
+#endif
+}
+
diff --git a/contrib/libaislock/libaislock.h b/contrib/libaislock/libaislock.h
new file mode 100644
index 0000000..3faeffd
--- /dev/null
+++ b/contrib/libaislock/libaislock.h
@@ -0,0 +1,190 @@
+typedef char  			SaInt8T;
+typedef short 			SaInt16T;
+typedef long  			SaInt32T;
+typedef long long 		SaInt64T;
+typedef unsigned char 		SaUint8T;
+typedef unsigned short 		SaUint16T;
+typedef unsigned long 		SaUint32T;
+typedef unsigned long long 	SaUint64T;
+typedef SaInt64T 		SaTimeT;
+
+#define SA_MAX_NAME_LENGTH 256
+
+typedef struct {
+    SaUint16T length;
+    unsigned char value[SA_MAX_NAME_LENGTH];
+} SaNameT;
+
+typedef struct {
+    char releaseCode;
+    unsigned char major;
+    unsigned char minor;
+} SaVersionT;
+
+typedef int SaSelectionObjectT;
+
+typedef void *SaInvocationT;
+
+typedef enum {
+    SA_DISPATCH_ONE = 1,
+    SA_DISPATCH_ALL = 2,
+    SA_DISPATCH_BLOCKING = 3
+} SaDispatchFlagsT;
+
+typedef enum {
+    SA_OK = 1,
+    SA_ERR_LIBRARY = 2,
+    SA_ERR_VERSION = 3,
+    SA_ERR_INIT = 4,
+    SA_ERR_TIMEOUT = 5,
+    SA_ERR_TRY_AGAIN = 6,
+    SA_ERR_INVALID_PARAM = 7,
+    SA_ERR_NO_MEMORY = 8,
+    SA_ERR_BAD_HANDLE = 9,
+    SA_ERR_BUSY = 10,
+    SA_ERR_ACCESS = 11,
+    SA_ERR_NOT_EXIST = 12,
+    SA_ERR_NAME_TOO_LONG = 13,
+    SA_ERR_EXIST = 14,
+    SA_ERR_NO_SPACE = 15,
+    SA_ERR_INTERRUPT =16,
+    SA_ERR_SYSTEM = 17,
+    SA_ERR_NAME_NOT_FOUND = 18,
+    SA_ERR_NO_RESOURCES = 19,
+    SA_ERR_NOT_SUPPORTED = 20,
+    SA_ERR_BAD_OPERATION = 21,
+    SA_ERR_FAILED_OPERATION = 22,
+    SA_ERR_MESSAGE_ERROR = 23,
+    SA_ERR_NO_MESSAGE = 24,
+    SA_ERR_QUEUE_FULL = 25,
+    SA_ERR_QUEUE_NOT_AVAILABLE = 26,
+    SA_ERR_BAD_CHECKPOINT = 27,
+    SA_ERR_BAD_FLAGS = 28
+} SaErrorT;
+
+/* Chapter 10 */
+typedef enum {
+    SA_LCK_PR_LOCK_MODE = 1,
+    SA_LCK_EX_LOCK_MODE = 2
+} SaLckLockModeT;
+
+typedef struct{
+	int site;
+	int pid;
+} SaLckLockHolderT;
+
+typedef struct {
+	SaLckLockHolderT	orphan_holder;
+	SaNameT			name;
+} SaLckResourceIdT;
+
+typedef struct {
+	struct dlm_lksb		lksb;
+	SaLckResourceIdT	*resource;
+	SaLckLockModeT		held_mode;
+	SaLckLockModeT		requested_mode;
+	int			unlock;
+	SaInvocationT		args;
+} SaLckLockIdT;
+
+#define SA_LCK_LOCK_NO_QUEUE 0x1
+#define SA_LCK_LOCK_ORPHAN 0x2
+#define SA_LCK_LOCK_TIMEOUT 0X4
+typedef SaUint32T SaLckLockFlagsT;
+
+typedef enum {
+    SA_LCK_LOCK_GRANTED = 1,
+    SA_LCK_LOCK_RELEASED = 2,
+    SA_LCK_LOCK_DEADLOCK = 3,
+    SA_LCK_LOCK_NOT_QUEUED = 4,
+    SA_LCK_LOCK_TIMED_OUT = 5,
+    SA_LCK_LOCK_ORPHANED = 6,
+    SA_LCK_LOCK_NO_MORE = 7
+} SaLckLockStatusT;
+
+typedef void 
+(*SaLckLockGrantCallbackT)(SaInvocationT invocation,
+                           const SaLckResourceIdT *resourceId,
+                           const SaLckLockIdT *lockId,
+                           SaLckLockModeT lockMode,
+                           SaLckLockStatusT lockStatus,
+                           SaErrorT error);
+
+typedef void 
+(*SaLckLockWaiterCallbackT)(SaInvocationT invocation,
+                            const SaLckResourceIdT *resourceId,
+                            const SaLckLockIdT *lockId,
+                            SaLckLockModeT modeHeld,
+                            SaLckLockModeT modeRequested);
+
+typedef void 
+(*SaLckResourceUnlockCallbackT)(SaInvocationT invocation,
+                                const SaLckResourceIdT *resourceId,
+                                const SaLckLockIdT *lockId,
+                                SaLckLockStatusT lockStatus,
+                                SaErrorT error);
+typedef struct SaLckCallbacks {
+    SaLckLockGrantCallbackT saLckLockGrantCallback;
+    SaLckLockWaiterCallbackT saLckLockWaiterCallback;
+    SaLckResourceUnlockCallbackT saLckResourceUnlockCallback;
+}SaLckCallbacksT;
+
+typedef struct {
+	SaLckCallbacksT		callback;
+	SaVersionT		version;
+} SaLckHandleT;
+
+    SaErrorT 
+saLckInitialize(SaLckHandleT *lckHandle, const SaLckCallbacksT *lckCallbacks,
+                const SaVersionT *version);
+
+    SaErrorT 
+saLckSelectionObjectGet(const SaLckHandleT *lckHandle,
+                        SaSelectionObjectT *selectionObject);
+
+    SaErrorT 
+saLckDispatch(const SaLckHandleT *lckHandle,
+              const SaDispatchFlagsT dispatchFlags);
+
+    SaErrorT 
+saLckFinalize(SaLckHandleT *lckHandle);
+
+    SaErrorT 
+saLckResourceOpen(const SaLckHandleT *lckHandle,
+                  const SaNameT *lockName,
+                  SaLckResourceIdT *resourceId);
+
+    SaErrorT 
+saLckResourceClose(SaLckHandleT *lckHandle, SaLckResourceIdT *resourceId);
+
+    SaErrorT 
+saLckResourceLock(const SaLckHandleT *lckHandle, SaInvocationT invocation,
+                  const SaLckResourceIdT *resourceId,
+                  SaLckLockIdT *lockId,
+                  SaLckLockModeT lockMode,
+                  SaLckLockFlagsT lockFlags,
+                  SaTimeT timeout,
+                  SaLckLockStatusT *lockStatus);
+
+    SaErrorT
+SaLckResourceLockAsync(const SaLckHandleT *lckHandle,
+                       SaInvocationT invocation,
+                       const SaLckResourceIdT *resourceId,
+                       SaLckLockIdT *lockId,
+                       SaLckLockModeT lockMode,
+                       SaLckLockFlagsT lockFlags,
+                       SaTimeT timeout);
+
+    SaErrorT 
+saLckResourceUnlock(const SaLckHandleT *lckHandle,
+                    SaLckLockIdT *lockId,
+                    SaTimeT timeout);
+
+    SaErrorT 
+saLckResourceUnlockAsync(const SaLckHandleT *lckHandle,
+                         SaInvocationT invocation,
+                         SaLckLockIdT *lockId);
+
+    SaErrorT
+saLckLockPurge(const SaLckHandleT *lckHandle,
+               const SaLckResourceIdT *resourceId);
diff --git a/dlm/libdlm/Makefile b/dlm/libdlm/Makefile
index dac48ec..3419dfb 100644
--- a/dlm/libdlm/Makefile
+++ b/dlm/libdlm/Makefile
@@ -26,17 +26,18 @@ include $(OBJDIR)/make/clean.mk
 include $(OBJDIR)/make/install.mk
 include $(OBJDIR)/make/uninstall.mk
 
-AISTARGET= libaislock
-
+CFLAGS += -fPIC
 CFLAGS += -I$(S)
 CFLAGS += -I${incdir}
 CFLAGS += -I$(KERNEL_SRC)/include
 
+REENT_CFLAGS += -D_REENTRANT
+
 LDFLAGS += -L${libdir}
 
 PTHREAD_LDFLAGS += -lpthread 
 
-$(TARGET).a: $(TARGET).o $(AISTARGET).o
+$(TARGET).a: $(TARGET).o
 	${AR} cru $@ $^
 	${RANLIB} $@
 
@@ -44,30 +45,17 @@ $(TARGET)_lt.a: $(TARGET)_lt.o
 	${AR} cru $@ $^
 	${RANLIB} $@
 
-$(TARGET).so.${SOMAJOR}.${SOMINOR}: $(TARGET).po $(AISTARGET).po
+$(TARGET).so.${SOMAJOR}.${SOMINOR}: $(TARGET).o
 	$(CC) -shared -o $@ -Wl,-soname=$(TARGET).so.$(SOMAJOR) $< $(PTHREAD_LDFLAGS) $(LDFLAGS)
 	ln -sf $(TARGET).so.$(SOMAJOR).$(SOMINOR) $(TARGET).so
 	ln -sf $(TARGET).so.$(SOMAJOR).$(SOMINOR) $(TARGET).so.$(SOMAJOR)
 
-$(TARGET)_lt.so.${SOMAJOR}.${SOMINOR}: $(TARGET)_lt.po
+$(TARGET)_lt.so.${SOMAJOR}.${SOMINOR}: $(TARGET)_lt.o
 	$(CC) -shared -o $@ -Wl,-soname=$(TARGET)_lt.so.$(SOMAJOR) $< $(LDFLAGS)
 	ln -sf $(TARGET)_lt.so.$(SOMAJOR).$(SOMINOR) $(TARGET)_lt.so
 	ln -sf $(TARGET)_lt.so.$(SOMAJOR).$(SOMINOR) $(TARGET)_lt.so.$(SOMAJOR)
 
-%_lt.o: $(S)/%.c
-	$(CC) $(CFLAGS) -c -o $@ $<
-
-%_lt.po: $(S)/%.c
-	$(CC) $(CFLAGS) -fPIC -c -o $@ $<
-
-%.o: $(S)/%.c
-	$(CC) $(CFLAGS) -D_REENTRANT -c -o $@ $<
-
-%.po: $(S)/%.c
-	$(CC) $(CFLAGS) -fPIC -D_REENTRANT -c -o $@ $<
-
 clean: generalclean
 
 -include $(TARGET).d
 -include $(TARGET)_lt.d
--include $(AISTARGET).d
diff --git a/dlm/libdlm/libaislock.c b/dlm/libdlm/libaislock.c
deleted file mode 100644
index b829843..0000000
--- a/dlm/libdlm/libaislock.c
+++ /dev/null
@@ -1,468 +0,0 @@
-# ifdef _REENTRANT
-#  include <pthread.h>
-# endif
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <string.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/file.h>
-#include <sys/stat.h>
-
-#include <linux/types.h>
-#include <linux/dlm.h>
-#define BUILDING_LIBDLM
-#include "libdlm.h"
-#include "libaislock.h"
-#include <linux/dlm_device.h>
-
-enum {
-	SA_LCK_GRANT_CB = 1,
-	SA_LCK_WAITER_CB = 2,
-};
-
-static struct dlm_ls_info *sa_default_ls = NULL;
-
-inline int lkmode_ais2dlm(SaLckLockModeT mode)
-{
-	switch(mode)
-	{
-	case SA_LCK_PR_LOCK_MODE:
-		return DLM_LOCK_PR;
-	case SA_LCK_EX_LOCK_MODE:
-		return DLM_LOCK_EX;
-	default:
-		return -1;
-	}
-}
-
-inline SaLckLockModeT lkmode_dlm2ais(int mode)
-{
-	switch(mode)
-	{
-	case DLM_LOCK_PR:
-		return SA_LCK_PR_LOCK_MODE;
-	case DLM_LOCK_EX:
-		return SA_LCK_EX_LOCK_MODE;
-	default:
-		return -1;
-	}
-}
-
-inline unsigned long lkflag_ais2dlm(SaLckLockFlagsT flag)
-{
-	unsigned long dlm_flag = 0;
-
-	if(flag & SA_LCK_LOCK_NO_QUEUE)
-		dlm_flag |= DLM_LKF_NOQUEUE;
-	if(flag & SA_LCK_LOCK_ORPHAN)
-		dlm_flag |= DLM_LKF_ORPHAN;
-
-	return dlm_flag;
-}
-
-inline SaLckLockStatusT lkstatus_dlm2ais(int status)
-{
-	switch(status)
-	{
-	case -ENOMEM:
-		return SA_LCK_LOCK_NO_MORE;
-	case 0:
-		return SA_LCK_LOCK_GRANTED;
-	case -EAGAIN:
-		return SA_LCK_LOCK_NOT_QUEUED;
-	default:
-		return -1;
-	}
-}
-
-inline SaErrorT lkerr_dlm2ais(int status)
-{
-	switch(status)
-	{
-	case -EINVAL:
-		return SA_ERR_INVALID_PARAM;
-	case 0:
-		return SA_OK;
-	default:
-		return -1;
-	}
-}
-
-
-SaErrorT
-saLckInitialize(SaLckHandleT *lckHandle, const SaLckCallbacksT *lckCallbacks,
-		const SaVersionT *version)
-{
-	dlm_lshandle_t ls = NULL;
-
-	if (NULL == lckHandle)
-		return SA_ERR_INVALID_PARAM;
-
-	if (lckCallbacks) {
-		lckHandle->callback.saLckLockGrantCallback =
-			lckCallbacks->saLckLockGrantCallback;
-		lckHandle->callback.saLckLockWaiterCallback =
-			lckCallbacks->saLckLockWaiterCallback;
-		lckHandle->callback.saLckResourceUnlockCallback =
-			lckCallbacks->saLckResourceUnlockCallback;
-	} else {
-		lckHandle->callback.saLckLockGrantCallback = NULL;
-		lckHandle->callback.saLckLockWaiterCallback = NULL;
-		lckHandle->callback.saLckResourceUnlockCallback = NULL;
-	}
-	lckHandle->version.releaseCode = version->releaseCode;
-	lckHandle->version.major = version->major;
-	lckHandle->version.minor = version->minor;
-
-	ls = dlm_create_lockspace("sa_default", 0600);
-	if (!ls)
-		return SA_ERR_LIBRARY;
-
-	sa_default_ls = (struct dlm_ls_info *)ls;
-	return SA_OK;
-}
-
-
-SaErrorT
-saLckFinalize(SaLckHandleT *lckHandle)
-{
-	if ( NULL == sa_default_ls ) {
-		return SA_ERR_LIBRARY;
-	}
-
-	if(!dlm_release_lockspace("sa_default", sa_default_ls, 1)) {
-		return SA_OK;
-	} else {
-		return SA_ERR_LIBRARY;
-	}
-}
-
-SaErrorT
-saLckResourceOpen(const SaLckHandleT *lckHandle, const SaNameT *lockName,
-		  SaLckResourceIdT *resourceId)
-{
-	if ( NULL == sa_default_ls ) {
-		return SA_ERR_LIBRARY;
-	}
-
-	if (lockName->length <= 31 ) /* OpenDLM only support namelen <= 31*/
-	{
-		resourceId->name.length = lockName->length;
-		strncpy((char *)resourceId->name.value, (char *)lockName->value, lockName->length);
-	} else {
-		return SA_ERR_NO_MEMORY;
-	}
-
-	return SA_OK;
-}
-
-
-SaErrorT
-saLckResourceClose(SaLckHandleT *lckHandle, SaLckResourceIdT *resourceId)
-{
-	if ( NULL == sa_default_ls ) {
-		return SA_ERR_LIBRARY;
-	}
-
-	return SA_OK;
-}
-
-
-SaErrorT
-saLckSelectionObjectGet(const SaLckHandleT *lckHandle,
-			SaSelectionObjectT *selectionObject)
-{
-	int fd = -1;
-
-	if ( NULL == sa_default_ls ) {
-		return SA_ERR_LIBRARY;
-	}
-
-	fd = dlm_ls_get_fd(sa_default_ls);
-
-	if(!fd)
-		return SA_ERR_LIBRARY;
-
-	*selectionObject = fd;
-
-	return SA_OK;
-}
-
-
-SaErrorT
-saLckDispatch(const SaLckHandleT *lckHandle,
-	      const SaDispatchFlagsT dispatchFlags)
-{
-	int status;
-	int fdflags;
-	char resultbuf[sizeof(struct dlm_lock_result)];
-	struct dlm_lock_result *result = (struct dlm_lock_result *)resultbuf;
-	char *fullresult=NULL;
-	SaLckLockIdT *lkid;
-	SaLckLockModeT lock_mode;
-	int fd = -1;
-
-	if ( NULL == sa_default_ls ) {
-		return SA_ERR_LIBRARY;
-	}
-
-	fd = dlm_ls_get_fd(sa_default_ls);
-
-	if(!fd)
-		return SA_ERR_LIBRARY;
-
-	fdflags = fcntl(fd, F_GETFL, 0);
-	fcntl(fd, F_SETFL,  fdflags | O_NONBLOCK);
-
-	do
-	{
-
-		/* Just read the header first */
-		status = read(fd, result, sizeof(struct dlm_lock_result));
-		if (status <= 0)
-    			break;
-
-		if (result->length != status)
-		{
-        		int newstat;
-
-        		fullresult = malloc(result->length);
-        		if (!fullresult)
-            			break;
-
-        		newstat = read(fd, fullresult, result->length);
-
-			/* If it read OK then use the new data. otherwise we can
-			   still deliver the AST, it just might not have all the
-			   info in it...hmmm */
-			if (newstat == result->length)
-				result = (struct dlm_lock_result *)fullresult;
-		}
-
-		/* Copy lksb to user's buffer - except the LVB ptr */
-		memcpy(result->user_lksb, &result->lksb,
-		       sizeof(struct dlm_lksb) - sizeof(char*));
-
-		/* Flip the status. Kernel space likes negative return codes,
-		   userspace positive ones */
-		result->user_lksb->sb_status = -result->user_lksb->sb_status;
-
-		/* Need not to care LVB*/
-#ifdef QUERY
-		/* Copy optional items */
-		if (result->qinfo_offset)
-		{
-    			/* Just need the lockcount written out here */
-    			struct dlm_queryinfo *qi = (struct dlm_queryinfo *)
-				(fullresult+result->qinfo_offset);
-    			result->user_qinfo->gqi_lockcount = qi->gqi_lockcount;
-		}
-
-		if (result->qresinfo_offset)
-			memcpy(result->user_qinfo->gqi_resinfo,
-			       fullresult+result->qresinfo_offset,
-			       sizeof(struct dlm_resinfo));
-
-		if (result->qlockinfo_offset)
-			memcpy(result->user_qinfo->gqi_lockinfo,
-			       fullresult+result->qlockinfo_offset,
-			       sizeof(struct dlm_lockinfo) *
-			       result->user_qinfo->gqi_lockcount);
-#endif
- 		/* Call AST */
-		lkid = (SaLckLockIdT *)result->user_astparam;
-		if (lkid->unlock) {
-			/* dispatch unlock ast */
-			lkid->unlock = 0;
-			lkid->held_mode = 0;
-			if(lckHandle->callback.saLckResourceUnlockCallback)
-				lckHandle->callback.
-					saLckResourceUnlockCallback(
-						lkid->args, lkid->resource, lkid,
-						SA_LCK_LOCK_RELEASED, SA_OK);
-
-		} else if (SA_LCK_GRANT_CB == (int)result->user_astaddr) {
-			/* dispatch lock ast */
-			if (0 == lkid->lksb.sb_status) {
-				lkid->held_mode = lkid->requested_mode;
-				lock_mode = lkid->requested_mode;
-			} else {
-				lock_mode = lkid->held_mode;
-			}
-
-			if(lckHandle->callback.saLckLockGrantCallback)
-				lckHandle->callback.
-					saLckLockGrantCallback(
-						lkid->args, lkid->resource,
-						lkid, lock_mode,
-						lkstatus_dlm2ais(
-							lkid->lksb.sb_status),
-						SA_OK);
-		} else if (SA_LCK_WAITER_CB == (int)result->user_astaddr) {
-			/* dispatch waiter ast */
-			if(lckHandle->callback.saLckLockWaiterCallback)
-				lckHandle->callback.
-					saLckLockWaiterCallback(
-						lkid->args, lkid->resource,
-						lkid, lkid->held_mode, result->bast_mode);
-		} else {
-			return SA_ERR_LIBRARY;
-		}
-	} while (0 !=status && SA_DISPATCH_ONE != dispatchFlags);
-
-	/* EAGAIN is not an error */
-	if (status < 0 && errno == EAGAIN)
-                status = 0;
-
-	fcntl(fd, F_SETFL, fdflags);
-    	return SA_OK;
-}
-
-SaErrorT
-SaLckResourceLockAsync(const SaLckHandleT *lckHandle, SaInvocationT invocation,
-		       const SaLckResourceIdT *resourceId, SaLckLockIdT *lockId,
-		       SaLckLockModeT lockMode, SaLckLockFlagsT lockFlags,
-		       SaTimeT timeout)
-{
-	int ret_val;		/* value to be returned from function */
-
-	if ( NULL == sa_default_ls ) {
-		return SA_ERR_LIBRARY;
-	}
-
-	/*FIXME deal with timeout in lock/lockasync/unlock.
-	 */
-	lockId->resource = (SaLckResourceIdT *)resourceId;
-	lockId->requested_mode = lockMode;
-	lockId->args = invocation;
-
-	ret_val = dlm_ls_lock(sa_default_ls, lkmode_ais2dlm(lockMode),
-			      &(lockId->lksb), lkflag_ais2dlm(lockFlags),
-			      (void *)(resourceId->name.value),
-			      resourceId->name.length, 0, (void *)SA_LCK_GRANT_CB,
-			      lockId, (void *)SA_LCK_WAITER_CB, NULL);
-
-	return lkerr_dlm2ais(ret_val);
-}
-
-SaErrorT
-saLckResourceLock(const SaLckHandleT *lckHandle, SaInvocationT invocation,
-		  const SaLckResourceIdT *resourceId, SaLckLockIdT *lockId,
-		  SaLckLockModeT lockMode, SaLckLockFlagsT lockFlags,
-		  SaTimeT timeout, SaLckLockStatusT *lockStatus)
-
-{
-	int ret_val;		/* value to be returned from function */
-
-	if ( NULL == sa_default_ls ) {
-		return SA_ERR_LIBRARY;
-	}
-
-	lockId->resource = (SaLckResourceIdT *)resourceId;
-	lockId->requested_mode = lockMode;
-	lockId->args = invocation;
-
-	ret_val = dlm_ls_lock_wait(sa_default_ls, lkmode_ais2dlm(lockMode),
-				   &(lockId->lksb), lkflag_ais2dlm(lockFlags),
-				   (void *)(resourceId->name.value),
-				   resourceId->name.length, 0, lockId,
-				   (void *)SA_LCK_WAITER_CB, NULL);
-
-	*lockStatus = lkstatus_dlm2ais(lockId->lksb.sb_status);
-	lockId->held_mode = lockId->requested_mode;
-
-	return lkerr_dlm2ais(ret_val);
-}
-
-SaErrorT
-saLckResourceUnlock(const SaLckHandleT *lckHandle, SaLckLockIdT *lockId,
-		    SaTimeT timeout)
-{
-	int ret_val;	/* value to be returned from function */
-
-	if ( NULL == sa_default_ls ) {
-		return SA_ERR_LIBRARY;
-	}
-
-	ret_val = dlm_ls_unlock_wait(sa_default_ls, lockId->lksb.sb_lkid, 0,
-				     &(lockId->lksb));
-	lockId->held_mode = 0;
-
-	return lkerr_dlm2ais(ret_val);
-}
-
-SaErrorT
-saLckResourceUnlockAsync(const SaLckHandleT *lckHandle,
-			 SaInvocationT invocation, SaLckLockIdT *lockId)
-{
-	int ret_val;	/* value to be returned from function */
-
-	if ( NULL == sa_default_ls ) {
-		return SA_ERR_LIBRARY;
-	}
-
-	lockId->unlock = 1;
-	lockId->args = invocation;
-
-
-	ret_val = dlm_ls_unlock(sa_default_ls, lockId->lksb.sb_lkid, 0, &(lockId->lksb),
-				lockId);
-
-	return lkerr_dlm2ais(ret_val);
-}
-
-
-SaErrorT
-saLckLockPurge(const SaLckHandleT *lckHandle,
-	       const SaLckResourceIdT *resourceId)
-{
-#ifdef QUERY
-	int ret_val;	/* value to be returned from function */
-	SaLckLockIdT lockId;
-	struct dlm_lksb lksb;
-	struct dlm_resinfo resinfo;
-	static struct dlm_queryinfo qinfo;
-	struct dlm_lockinfo *p;
-
-	qinfo.gqi_resinfo = &resinfo;
-	qinfo.gqi_lockinfo = malloc(sizeof(struct dlm_lockinfo) * 10);
-	qinfo.gqi_locksize = 10;
-
-
-	if ( NULL == sa_default_ls ) {
-		return SA_ERR_LIBRARY;
-	}
-
-	lockId.resource = (SaLckResourceIdT *)resourceId;
-	lockId.requested_mode = DLM_LOCK_NL;
-
-	ret_val = dlm_ls_lock_wait(sa_default_ls, DLM_LOCK_NL,
-				   &(lockId.lksb), DLM_LKF_EXPEDITE,
-				   (void *)(resourceId->name.value),
-				   resourceId->name.length, 0, &lockId,
-				   (void *)SA_LCK_WAITER_CB, NULL);
-
-	dlm_ls_query_wait(sa_default_ls, &(lockId.lksb),
-			  DLM_QUERY_QUEUE_ALL|DLM_QUERY_LOCKS_ORPHAN, &qinfo);
-
-	for ( p = qinfo.gqi_lockinfo; 0 != p->lki_lkid; p++ ) {
-		lksb.sb_lkid = p->lki_lkid;
-		ret_val = dlm_ls_unlock_wait(sa_default_ls, p->lki_lkid, 0,
-					     &lksb);
-	}
-
-	ret_val = dlm_ls_unlock_wait(sa_default_ls, lockId.lksb.sb_lkid, 0,
-				     &(lockId.lksb));
-
-	return lkerr_dlm2ais(ret_val);
-#else
-	return -1;
-#endif
-}
-
diff --git a/dlm/libdlm/libaislock.h b/dlm/libdlm/libaislock.h
deleted file mode 100644
index 3faeffd..0000000
--- a/dlm/libdlm/libaislock.h
+++ /dev/null
@@ -1,190 +0,0 @@
-typedef char  			SaInt8T;
-typedef short 			SaInt16T;
-typedef long  			SaInt32T;
-typedef long long 		SaInt64T;
-typedef unsigned char 		SaUint8T;
-typedef unsigned short 		SaUint16T;
-typedef unsigned long 		SaUint32T;
-typedef unsigned long long 	SaUint64T;
-typedef SaInt64T 		SaTimeT;
-
-#define SA_MAX_NAME_LENGTH 256
-
-typedef struct {
-    SaUint16T length;
-    unsigned char value[SA_MAX_NAME_LENGTH];
-} SaNameT;
-
-typedef struct {
-    char releaseCode;
-    unsigned char major;
-    unsigned char minor;
-} SaVersionT;
-
-typedef int SaSelectionObjectT;
-
-typedef void *SaInvocationT;
-
-typedef enum {
-    SA_DISPATCH_ONE = 1,
-    SA_DISPATCH_ALL = 2,
-    SA_DISPATCH_BLOCKING = 3
-} SaDispatchFlagsT;
-
-typedef enum {
-    SA_OK = 1,
-    SA_ERR_LIBRARY = 2,
-    SA_ERR_VERSION = 3,
-    SA_ERR_INIT = 4,
-    SA_ERR_TIMEOUT = 5,
-    SA_ERR_TRY_AGAIN = 6,
-    SA_ERR_INVALID_PARAM = 7,
-    SA_ERR_NO_MEMORY = 8,
-    SA_ERR_BAD_HANDLE = 9,
-    SA_ERR_BUSY = 10,
-    SA_ERR_ACCESS = 11,
-    SA_ERR_NOT_EXIST = 12,
-    SA_ERR_NAME_TOO_LONG = 13,
-    SA_ERR_EXIST = 14,
-    SA_ERR_NO_SPACE = 15,
-    SA_ERR_INTERRUPT =16,
-    SA_ERR_SYSTEM = 17,
-    SA_ERR_NAME_NOT_FOUND = 18,
-    SA_ERR_NO_RESOURCES = 19,
-    SA_ERR_NOT_SUPPORTED = 20,
-    SA_ERR_BAD_OPERATION = 21,
-    SA_ERR_FAILED_OPERATION = 22,
-    SA_ERR_MESSAGE_ERROR = 23,
-    SA_ERR_NO_MESSAGE = 24,
-    SA_ERR_QUEUE_FULL = 25,
-    SA_ERR_QUEUE_NOT_AVAILABLE = 26,
-    SA_ERR_BAD_CHECKPOINT = 27,
-    SA_ERR_BAD_FLAGS = 28
-} SaErrorT;
-
-/* Chapter 10 */
-typedef enum {
-    SA_LCK_PR_LOCK_MODE = 1,
-    SA_LCK_EX_LOCK_MODE = 2
-} SaLckLockModeT;
-
-typedef struct{
-	int site;
-	int pid;
-} SaLckLockHolderT;
-
-typedef struct {
-	SaLckLockHolderT	orphan_holder;
-	SaNameT			name;
-} SaLckResourceIdT;
-
-typedef struct {
-	struct dlm_lksb		lksb;
-	SaLckResourceIdT	*resource;
-	SaLckLockModeT		held_mode;
-	SaLckLockModeT		requested_mode;
-	int			unlock;
-	SaInvocationT		args;
-} SaLckLockIdT;
-
-#define SA_LCK_LOCK_NO_QUEUE 0x1
-#define SA_LCK_LOCK_ORPHAN 0x2
-#define SA_LCK_LOCK_TIMEOUT 0X4
-typedef SaUint32T SaLckLockFlagsT;
-
-typedef enum {
-    SA_LCK_LOCK_GRANTED = 1,
-    SA_LCK_LOCK_RELEASED = 2,
-    SA_LCK_LOCK_DEADLOCK = 3,
-    SA_LCK_LOCK_NOT_QUEUED = 4,
-    SA_LCK_LOCK_TIMED_OUT = 5,
-    SA_LCK_LOCK_ORPHANED = 6,
-    SA_LCK_LOCK_NO_MORE = 7
-} SaLckLockStatusT;
-
-typedef void 
-(*SaLckLockGrantCallbackT)(SaInvocationT invocation,
-                           const SaLckResourceIdT *resourceId,
-                           const SaLckLockIdT *lockId,
-                           SaLckLockModeT lockMode,
-                           SaLckLockStatusT lockStatus,
-                           SaErrorT error);
-
-typedef void 
-(*SaLckLockWaiterCallbackT)(SaInvocationT invocation,
-                            const SaLckResourceIdT *resourceId,
-                            const SaLckLockIdT *lockId,
-                            SaLckLockModeT modeHeld,
-                            SaLckLockModeT modeRequested);
-
-typedef void 
-(*SaLckResourceUnlockCallbackT)(SaInvocationT invocation,
-                                const SaLckResourceIdT *resourceId,
-                                const SaLckLockIdT *lockId,
-                                SaLckLockStatusT lockStatus,
-                                SaErrorT error);
-typedef struct SaLckCallbacks {
-    SaLckLockGrantCallbackT saLckLockGrantCallback;
-    SaLckLockWaiterCallbackT saLckLockWaiterCallback;
-    SaLckResourceUnlockCallbackT saLckResourceUnlockCallback;
-}SaLckCallbacksT;
-
-typedef struct {
-	SaLckCallbacksT		callback;
-	SaVersionT		version;
-} SaLckHandleT;
-
-    SaErrorT 
-saLckInitialize(SaLckHandleT *lckHandle, const SaLckCallbacksT *lckCallbacks,
-                const SaVersionT *version);
-
-    SaErrorT 
-saLckSelectionObjectGet(const SaLckHandleT *lckHandle,
-                        SaSelectionObjectT *selectionObject);
-
-    SaErrorT 
-saLckDispatch(const SaLckHandleT *lckHandle,
-              const SaDispatchFlagsT dispatchFlags);
-
-    SaErrorT 
-saLckFinalize(SaLckHandleT *lckHandle);
-
-    SaErrorT 
-saLckResourceOpen(const SaLckHandleT *lckHandle,
-                  const SaNameT *lockName,
-                  SaLckResourceIdT *resourceId);
-
-    SaErrorT 
-saLckResourceClose(SaLckHandleT *lckHandle, SaLckResourceIdT *resourceId);
-
-    SaErrorT 
-saLckResourceLock(const SaLckHandleT *lckHandle, SaInvocationT invocation,
-                  const SaLckResourceIdT *resourceId,
-                  SaLckLockIdT *lockId,
-                  SaLckLockModeT lockMode,
-                  SaLckLockFlagsT lockFlags,
-                  SaTimeT timeout,
-                  SaLckLockStatusT *lockStatus);
-
-    SaErrorT
-SaLckResourceLockAsync(const SaLckHandleT *lckHandle,
-                       SaInvocationT invocation,
-                       const SaLckResourceIdT *resourceId,
-                       SaLckLockIdT *lockId,
-                       SaLckLockModeT lockMode,
-                       SaLckLockFlagsT lockFlags,
-                       SaTimeT timeout);
-
-    SaErrorT 
-saLckResourceUnlock(const SaLckHandleT *lckHandle,
-                    SaLckLockIdT *lockId,
-                    SaTimeT timeout);
-
-    SaErrorT 
-saLckResourceUnlockAsync(const SaLckHandleT *lckHandle,
-                         SaInvocationT invocation,
-                         SaLckLockIdT *lockId);
-
-    SaErrorT
-saLckLockPurge(const SaLckHandleT *lckHandle,
-               const SaLckResourceIdT *resourceId);
diff --git a/fence/agents/xvm/Makefile b/fence/agents/xvm/Makefile
index 9f638ef..23be90b 100644
--- a/fence/agents/xvm/Makefile
+++ b/fence/agents/xvm/Makefile
@@ -37,7 +37,7 @@ CFLAGS += -I${virtincdir} -I${nssincdir} -I${nsprincdir}
 CFLAGS += `xml2-config --cflags`
 CFLAGS += -I${incdir}
 
-EXTRA_CFLAGS += -DSTANDALONE
+STANDALONE_CFLAGS += -DSTANDALONE
 
 LDFLAGS += -L${nsslibdir} -lnss3
 LDFLAGS += -L${corosynclibdir} -llogsys
diff --git a/make/cobj.mk b/make/cobj.mk
index 57cb960..b484f6b 100644
--- a/make/cobj.mk
+++ b/make/cobj.mk
@@ -1,5 +1,9 @@
 %.o: $(S)/%.c
-	$(CC) $(CFLAGS) -c -o $@ $<
+	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(REENT_CFLAGS) -c -o $@ $<
+
+# used by dlm/libdlm
+%_lt.o: $(S)/%.c
+	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<
 
 # used by rgmanager/src/daemons
 %-noccs.o: $(S)/%.c
@@ -7,4 +11,4 @@
 
 # used by fence/agents/xvm
 %-standalone.o: $(S)/%.c
-	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<
+	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(STANDALONE_CFLAGS) -c -o $@ $<
diff --git a/make/libs.mk b/make/libs.mk
index 406b7f2..cfe01c2 100644
--- a/make/libs.mk
+++ b/make/libs.mk
@@ -28,7 +28,7 @@ ifndef MAKESTATICLIB
 all: $(STATICLIB) $(SHAREDLIB)
 
 $(SHAREDLIB): $(OBJS)
-	$(CC) -shared -o $@ -Wl,-soname=$(TARGET).so.$(SOMAJOR) $< $(LDFLAGS)
+	$(CC) -shared -o $@ -Wl,-soname=$(TARGET).so.$(SOMAJOR) $^ $(LDFLAGS)
 	ln -sf $(TARGET).so.$(SOMAJOR).$(SOMINOR) $(TARGET).so
 	ln -sf $(TARGET).so.$(SOMAJOR).$(SOMINOR) $(TARGET).so.$(SOMAJOR)
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]