[Ocfs2-commits] khackel commits r1912 - branches/dlm-reco-mig/fs/ocfs2/dlm

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Thu Feb 24 03:03:56 CST 2005


Author: khackel
Date: 2005-02-24 03:03:54 -0600 (Thu, 24 Feb 2005)
New Revision: 1912

Modified:
   branches/dlm-reco-mig/fs/ocfs2/dlm/dlmmod.h
Log:
* cosmetic change to DLM_* flags
* added a standard node iterator for node maps, as of yet
  unused in code


Modified: branches/dlm-reco-mig/fs/ocfs2/dlm/dlmmod.h
===================================================================
--- branches/dlm-reco-mig/fs/ocfs2/dlm/dlmmod.h	2005-02-24 08:35:33 UTC (rev 1911)
+++ branches/dlm-reco-mig/fs/ocfs2/dlm/dlmmod.h	2005-02-24 09:03:54 UTC (rev 1912)
@@ -74,28 +74,32 @@
 #define LKM_MODEMASK    0xff
 
 
-/* reserved: flags used by the "real" dlm, only a few are supported by this dlm */
-#define LKM_ORPHAN       0x00000010  /* this lock is orphanable */    /* unsupported */
-#define LKM_PARENTABLE   0x00000020  /* this lock was orphaned */    /* unsupported */
-#define LKM_BLOCK        0x00000040  /* blocking lock request */    /* unsupported */
+
+/* reserved: flags used by the "real" dlm
+ * only a few are supported by this dlm 
+ * (U) = unsupported by ocfs2 dlm */
+#define LKM_ORPHAN       0x00000010  /* this lock is orphanable (U) */
+#define LKM_PARENTABLE   0x00000020  /* this lock was orphaned (U) */
+#define LKM_BLOCK        0x00000040  /* blocking lock request (U) */
 #define LKM_LOCAL        0x00000080  /* local lock request */    
 #define LKM_VALBLK       0x00000100  /* lock value block request */
 #define LKM_NOQUEUE      0x00000200  /* non blocking request */
 #define LKM_CONVERT      0x00000400  /* conversion request */
-#define LKM_NODLCKWT     0x00000800  /* this lock wont deadlock */    /* unsupported */
+#define LKM_NODLCKWT     0x00000800  /* this lock wont deadlock (U) */
 #define LKM_UNLOCK       0x00001000  /* deallocate this lock */
 #define LKM_CANCEL       0x00002000  /* cancel conversion request */
-#define LKM_DEQALL       0x00004000  /* remove all locks held by proc */    /* unsupported */
+#define LKM_DEQALL       0x00004000  /* remove all locks held by proc (U) */
 #define LKM_INVVALBLK    0x00008000  /* invalidate lock value block */
-#define LKM_SYNCSTS      0x00010000  /* return synchronous status if poss */    /* unsupported */
-#define LKM_TIMEOUT      0x00020000  /* lock request contains timeout */    /* unsupported */
-#define LKM_SNGLDLCK     0x00040000  /* request can self-deadlock */    /* unsupported */
-#define LKM_FINDLOCAL    0x00080000  /* find local lock request */    /* unsupported */
-#define LKM_PROC_OWNED   0x00100000  /* owned by process, not group */    /* unsupported */
-#define LKM_XID          0x00200000  /* use transaction id for deadlock */    /* unsupported */
-#define LKM_XID_CONFLICT 0x00400000  /* do not allow lock inheritance */    /* unsupported */
+#define LKM_SYNCSTS      0x00010000  /* return synchronous status if poss (U) */
+#define LKM_TIMEOUT      0x00020000  /* lock request contains timeout (U) */
+#define LKM_SNGLDLCK     0x00040000  /* request can self-deadlock (U) */
+#define LKM_FINDLOCAL    0x00080000  /* find local lock request (U) */
+#define LKM_PROC_OWNED   0x00100000  /* owned by process, not group (U) */
+#define LKM_XID          0x00200000  /* use transaction id for deadlock (U) */
+#define LKM_XID_CONFLICT 0x00400000  /* do not allow lock inheritance (U) */
 #define LKM_FORCE        0x00800000  /* force unlock flag */
-#define LKM_REVVALBLK    0x01000000  /* temporary solution: re-validate lock value block */    /* unsupported */
+#define LKM_REVVALBLK    0x01000000  /* temporary solution: re-validate 
+					lock value block (U) */
 /* unused */
 #define LKM_UNUSED1      0x00000001  /* unused */
 #define LKM_UNUSED2      0x00000002  /* unused */
@@ -104,12 +108,18 @@
 #define LKM_UNUSED5      0x02000000  /* unused */
 #define LKM_UNUSED6      0x04000000  /* unused */
 #define LKM_UNUSED7      0x08000000  /* unused */
-#define LKM_UNUSED8      0x10000000  /* unused */
-/* ocfs2 extensions: internal only; should never be used by caller */
-#define LKM_PUT_LVB      0x20000000  /* extension: lvb is being passed, should be applied to lockres */
-#define LKM_GET_LVB      0x40000000  /* extension: lvb should be copied from lockres when lock granted */
-#define LKM_RECOVERY     0x80000000  /* extension: flag for recovery lock, used to avoid recovery rwsem */
 
+/* ocfs2 extensions: internal only
+ * should never be used by caller */
+#define LKM_MIGRATION    0x10000000  /* extension: lockres is to be migrated
+					to another node */
+#define LKM_PUT_LVB      0x20000000  /* extension: lvb is being passed
+					should be applied to lockres */
+#define LKM_GET_LVB      0x40000000  /* extension: lvb should be copied 
+					from lockres when lock is granted */
+#define LKM_RECOVERY     0x80000000  /* extension: flag for recovery lock
+					used to avoid recovery rwsem */
+
 #define LKM_VALID_FLAGS (LKM_VALBLK | LKM_CONVERT | LKM_UNLOCK | \
 			 LKM_CANCEL | LKM_INVVALBLK | LKM_FORCE | \
 			 LKM_RECOVERY | LKM_LOCAL | LKM_NOQUEUE)
@@ -713,4 +723,32 @@
 	return ret;
 }
 
+typedef struct _dlm_node_iter
+{
+	unsigned long node_map[BITS_TO_LONGS(NM_MAX_NODES)];
+	int curnode;
+} dlm_node_iter;
+
+static inline void dlm_node_iter_init(unsigned long *map, dlm_node_iter *iter)
+{
+	DLM_ASSERT(iter);
+	memcpy(iter->node_map, map, sizeof(iter->node_map));
+	iter->curnode = -1;
+}
+
+static inline int dlm_node_iter_next(dlm_node_iter *iter)
+{
+	int bit;
+	DLM_ASSERT(iter);
+	bit = find_next_bit(iter->node_map, NM_MAX_NODES, iter->curnode+1);
+	if (bit >= NM_MAX_NODES) {
+		iter->curnode = NM_MAX_NODES;
+		return -ENOENT;
+	}
+	iter->curnode = bit;
+	return bit;
+}
+
+
+
 #endif /* CLUSTER_DLMMOD_H */



More information about the Ocfs2-commits mailing list