venus: Remove dedebug
[openafs.git] / src / vlserver / vlserver.p.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 #ifndef _VLSERVER_
11 #define _VLSERVER_
12
13 #include "vldbint.h"
14 #include <afs/afsutil.h>
15
16 extern struct vldstats dynamic_statistics;
17
18
19
20 #define HASHSIZE                8191    /* Must be prime */
21 #define NULLO                   0
22 #define VLDBALLOCCOUNT          500
23
24 /* Current upper limits limits on certain entries; increase with care! */
25 #define BADSERVERID     255
26 #define MAXSERVERID     254     /* permits 255 servers; was == 30 in version 1 */
27 #define MAXSERVERFLAG   0x80
28 #define MAXPARTITIONID  255
29 #define MAXBUMPCOUNT    0x7fffffff      /* Infinite  upper bound on bumping for now */
30 #define MAXLOCKTIME     0x7fffffff      /* Infinite locking for now */
31
32 /* Order of entries in the volumeid[] array */
33 #define RWVOL           0
34 #define ROVOL           1
35 #define BACKVOL         2
36
37 /* Header struct holding stats, internal pointers and the hash tables */
38 struct vlheader {
39     struct vital_vlheader vital_header; /* all small critical stuff are in here */
40     afs_uint32 IpMappedAddr[MAXSERVERID + 1];   /* Mapping of ip addresses to relative ones */
41     afs_uint32 VolnameHash[HASHSIZE];   /* hash table for vol names */
42     afs_uint32 VolidHash[MAXTYPES][HASHSIZE];   /* hash table for vol ids */
43     afs_int32 SIT;              /* spare for poss future use */
44 };
45
46 /* Vlentry's flags state */
47 #define VLFREE          1       /* If in free list */
48 #define VLDELETED       2       /* Entry is soft deleted */
49 #define VLLOCKED        4       /* Advisory lock on entry */
50 #define VLCONTBLOCK     8       /* Special continuation block entry */
51
52 /* Valid RelaseLock types */
53 #define LOCKREL_TIMESTAMP   1
54 #define LOCKREL_OPCODE      2
55 #define LOCKREL_AFSID       4
56
57 /* Per repsite flags (serverFlags) */
58 #define VLREPSITE_NEW   1       /* Replication site is got new release */
59
60 /* Internal representation of vldbentry; trying to save any bytes */
61 struct vlentry {
62     afs_uint32 volumeId[MAXTYPES];      /* Corresponding volume of each type */
63     afs_int32 flags;            /* General flags */
64     afs_int32 LockAfsId;        /* Person who locked entry */
65     afs_int32 LockTimestamp;    /* lock time stamp */
66     afs_uint32 cloneId;         /* used during cloning */
67     afs_int32 spares0;          /* XXXX was AssociatedChain XXXX */
68     afs_uint32 nextIdHash[MAXTYPES];    /* Next id hash table pointer (or freelist ->[0]) */
69     afs_uint32 nextNameHash;    /* Next name hash table pointer */
70     afs_int32 spares1[2];       /* long spares */
71     char name[VL_MAXNAMELEN];   /* Volume name */
72     char spares3;               /* XXX was volumeType XXXX */
73     u_char serverNumber[OMAXNSERVERS];  /* Server # for each server that holds volume */
74     u_char serverPartition[OMAXNSERVERS];       /* Server Partition number */
75     u_char serverFlags[OMAXNSERVERS];   /* Server flags */
76     char spares4;               /* XXX was RefCount XXX */
77     char spares2[1];            /* for 32-bit alignment */
78 };
79
80 struct nvlentry {
81     afs_uint32 volumeId[MAXTYPES];      /* Corresponding volume of each type */
82     afs_int32 flags;            /* General flags */
83     afs_int32 LockAfsId;        /* Person who locked entry */
84     afs_int32 LockTimestamp;    /* lock time stamp */
85     afs_uint32 cloneId;         /* used during cloning */
86     afs_uint32 nextIdHash[MAXTYPES];    /* Next id hash table pointer (or freelist ->[0]) */
87     afs_uint32 nextNameHash;    /* Next name hash table pointer */
88     char name[VL_MAXNAMELEN];   /* Volume name */
89     u_char serverNumber[NMAXNSERVERS];  /* Server # for each server that holds volume */
90     u_char serverPartition[NMAXNSERVERS];       /* Server Partition number */
91     u_char serverFlags[NMAXNSERVERS];   /* Server flags */
92 };
93
94 typedef struct vlheader vlheader;
95 typedef struct vlentry vlentry;
96 typedef struct nvlentry nvlentry;
97
98 #define DOFFSET(abase,astr,aitem) ((abase)+(((char *)(aitem)) - ((char *)(astr))))
99
100 #define VL_MHSRV_PERBLK         64
101 #define VL_MAXIPADDRS_PERMH     15
102 #define VL_MAX_ADDREXTBLKS      4
103 #define VL_ADDREXTBLK_SIZE      8192
104 struct extentaddr {
105     union ex_un {
106         struct {
107             afs_int32 count;    /* # of valid addresses */
108             afs_int32 spares1[2];
109             afs_int32 flags;    /* must be in the same position as the vlentry's
110                                    flags field */
111             afs_uint32 contaddrs[VL_MAX_ADDREXTBLKS];
112             afs_int32 spares2[24];
113         } _ex_header;
114         struct {
115             afsUUID hostuuid;
116             afs_int32 uniquifier;
117             afs_uint32 addrs[VL_MAXIPADDRS_PERMH];
118             afs_uint32 flags;
119             afs_int32 spares[11];
120         } _ex_addrentry;
121     } _ex_un;
122 };
123 #define ex_count        _ex_un._ex_header.count
124 #define ex_hdrflags     _ex_un._ex_header.flags
125 #define ex_contaddrs    _ex_un._ex_header.contaddrs
126 #define ex_hostuuid     _ex_un._ex_addrentry.hostuuid
127 #define ex_addrs        _ex_un._ex_addrentry.addrs
128 #define ex_uniquifier   _ex_un._ex_addrentry.uniquifier
129 #define ex_srvflags     _ex_un._ex_addrentry.flags
130
131 #define VLog(level, str)   ViceLog(level, str)
132
133 #endif /* _VLSERVER_ */