Blame view
fs/ocfs2/ocfs2_lockid.h
3.21 KB
ccd979bdb
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
/* -*- mode: c; c-basic-offset: 8; -*- * vim: noexpandtab sw=8 ts=8 sts=0: * * ocfs2_lockid.h * * Defines OCFS2 lockid bits. * * Copyright (C) 2002, 2005 Oracle. All rights reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 021110-1307, USA. */ #ifndef OCFS2_LOCKID_H #define OCFS2_LOCKID_H /* lock ids are made up in the following manner: * name[0] --> type * name[1-6] --> 6 pad characters, reserved for now * name[7-22] --> block number, expressed in hex as 16 chars * name[23-30] --> i_generation, expressed in hex 8 chars * name[31] --> '\0' */ #define OCFS2_LOCK_ID_MAX_LEN 32 #define OCFS2_LOCK_ID_PAD "000000" |
d680efe9d
|
37 |
#define OCFS2_DENTRY_LOCK_INO_START 18 |
ccd979bdb
|
38 39 40 41 42 43 |
enum ocfs2_lock_type { OCFS2_LOCK_TYPE_META = 0, OCFS2_LOCK_TYPE_DATA, OCFS2_LOCK_TYPE_SUPER, OCFS2_LOCK_TYPE_RENAME, OCFS2_LOCK_TYPE_RW, |
d680efe9d
|
44 |
OCFS2_LOCK_TYPE_DENTRY, |
500086300
|
45 |
OCFS2_LOCK_TYPE_OPEN, |
cf8e06f1a
|
46 |
OCFS2_LOCK_TYPE_FLOCK, |
9e33d69f5
|
47 |
OCFS2_LOCK_TYPE_QINFO, |
6ca497a83
|
48 |
OCFS2_LOCK_TYPE_NFS_SYNC, |
83273932f
|
49 |
OCFS2_LOCK_TYPE_ORPHAN_SCAN, |
8dec98edf
|
50 |
OCFS2_LOCK_TYPE_REFCOUNT, |
ccd979bdb
|
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
OCFS2_NUM_LOCK_TYPES }; static inline char ocfs2_lock_type_char(enum ocfs2_lock_type type) { char c; switch (type) { case OCFS2_LOCK_TYPE_META: c = 'M'; break; case OCFS2_LOCK_TYPE_DATA: c = 'D'; break; case OCFS2_LOCK_TYPE_SUPER: c = 'S'; break; case OCFS2_LOCK_TYPE_RENAME: c = 'R'; break; case OCFS2_LOCK_TYPE_RW: c = 'W'; break; |
d680efe9d
|
73 74 75 |
case OCFS2_LOCK_TYPE_DENTRY: c = 'N'; break; |
500086300
|
76 77 78 |
case OCFS2_LOCK_TYPE_OPEN: c = 'O'; break; |
cf8e06f1a
|
79 80 81 |
case OCFS2_LOCK_TYPE_FLOCK: c = 'F'; break; |
9e33d69f5
|
82 83 84 |
case OCFS2_LOCK_TYPE_QINFO: c = 'Q'; break; |
6ca497a83
|
85 86 87 |
case OCFS2_LOCK_TYPE_NFS_SYNC: c = 'Y'; break; |
83273932f
|
88 89 90 |
case OCFS2_LOCK_TYPE_ORPHAN_SCAN: c = 'P'; break; |
8dec98edf
|
91 92 93 |
case OCFS2_LOCK_TYPE_REFCOUNT: c = 'T'; break; |
ccd979bdb
|
94 95 96 97 98 99 |
default: c = '\0'; } return c; } |
d680efe9d
|
100 101 102 103 104 105 106 107 108 |
static char *ocfs2_lock_type_strings[] = { [OCFS2_LOCK_TYPE_META] = "Meta", [OCFS2_LOCK_TYPE_DATA] = "Data", [OCFS2_LOCK_TYPE_SUPER] = "Super", [OCFS2_LOCK_TYPE_RENAME] = "Rename", /* Need to differntiate from [R]ename.. serializing writes is the * important job it does, anyway. */ [OCFS2_LOCK_TYPE_RW] = "Write/Read", [OCFS2_LOCK_TYPE_DENTRY] = "Dentry", |
500086300
|
109 |
[OCFS2_LOCK_TYPE_OPEN] = "Open", |
cf8e06f1a
|
110 |
[OCFS2_LOCK_TYPE_FLOCK] = "Flock", |
9e33d69f5
|
111 |
[OCFS2_LOCK_TYPE_QINFO] = "Quota", |
a8b88d3d4
|
112 |
[OCFS2_LOCK_TYPE_NFS_SYNC] = "NFSSync", |
83273932f
|
113 |
[OCFS2_LOCK_TYPE_ORPHAN_SCAN] = "OrphanScan", |
8dec98edf
|
114 |
[OCFS2_LOCK_TYPE_REFCOUNT] = "Refcount", |
d680efe9d
|
115 116 117 118 119 |
}; static inline const char *ocfs2_lock_type_string(enum ocfs2_lock_type type) { #ifdef __KERNEL__ |
8f318311f
|
120 |
BUG_ON(type >= OCFS2_NUM_LOCK_TYPES); |
d680efe9d
|
121 122 123 |
#endif return ocfs2_lock_type_strings[type]; } |
ccd979bdb
|
124 |
#endif /* OCFS2_LOCKID_H */ |