[Ocfs2-commits] khackel commits r1947 - trunk/fs/ocfs2/dlm
svn-commits at oss.oracle.com
svn-commits at oss.oracle.com
Sun Mar 6 18:44:24 CST 2005
Author: khackel
Signed-off-by: mfasheh
Date: 2005-03-06 18:44:22 -0600 (Sun, 06 Mar 2005)
New Revision: 1947
Modified:
trunk/fs/ocfs2/dlm/dlmmod.h
Log:
* Merged 1912 from dlm-reco-mig branch:
- [1912] added node iterator
* inexplicably not merged in last attempt
Signed-off-by: mfasheh
Modified: trunk/fs/ocfs2/dlm/dlmmod.h
===================================================================
--- trunk/fs/ocfs2/dlm/dlmmod.h 2005-03-07 00:19:42 UTC (rev 1946)
+++ trunk/fs/ocfs2/dlm/dlmmod.h 2005-03-07 00:44:22 UTC (rev 1947)
@@ -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)
@@ -746,4 +756,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