initial-freebsd-port-work-20010414
[openafs.git] / src / afs / FBSD / osi_inode.h
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  * 
5  * This software has been released under the terms of the IBM Public
6  * License.  For details, see the LICENSE file in the top-level source
7  * directory or online at http://www.openafs.org/dl/license10.html
8  */
9
10 /*
11  * osi_inode.h
12  *
13  * Inode information required for DUX servers and salvager.
14  */
15 #ifndef _OSI_INODE_H_
16 #define _OSI_INODE_H_
17
18 #define BAD_IGET        -1000
19
20 #define VICEMAGIC       0xb61cfa84
21
22 #define DI_VICEP3(p) \
23         ( ((u_int)((p)->di_vicep3a)) << 16 | ((u_int)((p)->di_vicep3b)) )
24 #define I_VICE3(p) \
25         ( ((u_int)((p)->i_vicep3a)) << 16 | ((u_int)((p)->i_vicep3b)) )
26
27 #define FAKE_INODE_SIZE    (sizeof(struct vnode)+sizeof(struct inode))
28 #define MOUNTLIST_UNLOCK() simple_lock_unlock(&mountlist_slock)
29 #define MOUNTLIST_LOCK()   simple_lock(&mountlist_slock)
30
31 /* FreeBSD doesn't actually have a di_proplb, so we use di_spare[0] */
32 #define di_proplb       di_spare[0]
33 /* For some reason, they're called "oldids" instead of "bc_{u,g}id" */
34 #define di_bcuid        di_u.oldids[0]
35 #define di_bcgid        di_u.oldids[1]
36
37 #define i_vicemagic     i_din.di_spare[0]
38 #define i_vicep1        i_din.di_uid
39 #define i_vicep2        i_din.di_gid
40 #define i_vicep3a       i_din.di_u.oldids[0]
41 #define i_vicep3b       i_din.di_u.oldids[1]
42 #define i_vicep4        i_din.di_spare[1]       /* not used */
43
44 #define di_vicemagic    di_spare[0]
45 #define di_vicep1       di_uid
46 #define di_vicep2       di_gid
47 #define di_vicep3a      di_u.oldids[0]
48 #define di_vicep3b      di_u.oldids[1]
49 #define di_vicep4       di_spare[1]             /* not used */
50
51 /*
52  * Macros for handling inode numbers:
53  *     inode number to file system block offset.
54  *     inode number to cylinder group number.
55  *     inode number to file system block address.
56  */
57 #define itoo(fs, x)     ((x) % INOPB(fs))
58 #define itog(fs, x)     ((x) / (fs)->fs_ipg)
59 #define itod(fs, x) \
60         ((daddr_t)(cgimin(fs, itog(fs, x)) + \
61         (blkstofrags((fs), (((x) % (fs)->fs_ipg) / INOPB(fs))))))
62
63
64 #define  IS_VICEMAGIC(ip)        ((ip)->i_vicemagic == VICEMAGIC)
65 #define  IS_DVICEMAGIC(dp)       ((dp)->di_vicemagic == VICEMAGIC)
66
67 #define  CLEAR_VICEMAGIC(ip)     (ip)->i_vicemagic = 0
68 #define  CLEAR_DVICEMAGIC(dp)    (dp)->di_vicemagic = 0
69
70 #endif /* _OSI_INODE_H_ */