0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #ifndef OCFS2_LOCKID_H
0011 #define OCFS2_LOCKID_H
0012
0013
0014
0015
0016
0017
0018
0019 #define OCFS2_LOCK_ID_MAX_LEN 32
0020 #define OCFS2_LOCK_ID_PAD "000000"
0021
0022 #define OCFS2_DENTRY_LOCK_INO_START 18
0023
0024 enum ocfs2_lock_type {
0025 OCFS2_LOCK_TYPE_META = 0,
0026 OCFS2_LOCK_TYPE_DATA,
0027 OCFS2_LOCK_TYPE_SUPER,
0028 OCFS2_LOCK_TYPE_RENAME,
0029 OCFS2_LOCK_TYPE_RW,
0030 OCFS2_LOCK_TYPE_DENTRY,
0031 OCFS2_LOCK_TYPE_OPEN,
0032 OCFS2_LOCK_TYPE_FLOCK,
0033 OCFS2_LOCK_TYPE_QINFO,
0034 OCFS2_LOCK_TYPE_NFS_SYNC,
0035 OCFS2_LOCK_TYPE_ORPHAN_SCAN,
0036 OCFS2_LOCK_TYPE_REFCOUNT,
0037 OCFS2_LOCK_TYPE_TRIM_FS,
0038 OCFS2_NUM_LOCK_TYPES
0039 };
0040
0041 static inline char ocfs2_lock_type_char(enum ocfs2_lock_type type)
0042 {
0043 char c;
0044 switch (type) {
0045 case OCFS2_LOCK_TYPE_META:
0046 c = 'M';
0047 break;
0048 case OCFS2_LOCK_TYPE_DATA:
0049 c = 'D';
0050 break;
0051 case OCFS2_LOCK_TYPE_SUPER:
0052 c = 'S';
0053 break;
0054 case OCFS2_LOCK_TYPE_RENAME:
0055 c = 'R';
0056 break;
0057 case OCFS2_LOCK_TYPE_RW:
0058 c = 'W';
0059 break;
0060 case OCFS2_LOCK_TYPE_DENTRY:
0061 c = 'N';
0062 break;
0063 case OCFS2_LOCK_TYPE_OPEN:
0064 c = 'O';
0065 break;
0066 case OCFS2_LOCK_TYPE_FLOCK:
0067 c = 'F';
0068 break;
0069 case OCFS2_LOCK_TYPE_QINFO:
0070 c = 'Q';
0071 break;
0072 case OCFS2_LOCK_TYPE_NFS_SYNC:
0073 c = 'Y';
0074 break;
0075 case OCFS2_LOCK_TYPE_ORPHAN_SCAN:
0076 c = 'P';
0077 break;
0078 case OCFS2_LOCK_TYPE_REFCOUNT:
0079 c = 'T';
0080 break;
0081 case OCFS2_LOCK_TYPE_TRIM_FS:
0082 c = 'I';
0083 break;
0084 default:
0085 c = '\0';
0086 }
0087
0088 return c;
0089 }
0090
0091 static char *ocfs2_lock_type_strings[] = {
0092 [OCFS2_LOCK_TYPE_META] = "Meta",
0093 [OCFS2_LOCK_TYPE_DATA] = "Data",
0094 [OCFS2_LOCK_TYPE_SUPER] = "Super",
0095 [OCFS2_LOCK_TYPE_RENAME] = "Rename",
0096
0097
0098 [OCFS2_LOCK_TYPE_RW] = "Write/Read",
0099 [OCFS2_LOCK_TYPE_DENTRY] = "Dentry",
0100 [OCFS2_LOCK_TYPE_OPEN] = "Open",
0101 [OCFS2_LOCK_TYPE_FLOCK] = "Flock",
0102 [OCFS2_LOCK_TYPE_QINFO] = "Quota",
0103 [OCFS2_LOCK_TYPE_NFS_SYNC] = "NFSSync",
0104 [OCFS2_LOCK_TYPE_ORPHAN_SCAN] = "OrphanScan",
0105 [OCFS2_LOCK_TYPE_REFCOUNT] = "Refcount",
0106 [OCFS2_LOCK_TYPE_TRIM_FS] = "TrimFs",
0107 };
0108
0109 static inline const char *ocfs2_lock_type_string(enum ocfs2_lock_type type)
0110 {
0111 #ifdef __KERNEL__
0112 BUG_ON(type >= OCFS2_NUM_LOCK_TYPES);
0113 #endif
0114 return ocfs2_lock_type_strings[type];
0115 }
0116
0117 #endif