Coda Distributed File System
recle.h
Go to the documentation of this file.
1/* BLURB gpl
2
3 Coda File System
4 Release 8
5
6 Copyright (c) 1987-2021 Carnegie Mellon University
7 Additional copyrights listed below
8
9This code is distributed "AS IS" without warranty of any kind under
10the terms of the GNU General Public Licence Version 2, as shown in the
11file LICENSE. The technical and financial contributors to Coda are
12listed in the file CREDITS.
13
14 Additional copyrights
15 none currently
16
17#*/
18
19#ifndef _RECLE_H
20#define _RECLE_H 1
21#include <rec_dlist.h>
22#include "recvarl.h"
23
24#define DUMP_ENTRY_BEGIN_STAMP 0xfb32ea84
25#define DUMP_ENTRY_END_STAMP 0x989fd4ae
26
27class rsle;
28
29/* Recoverable resolution Log Entry - fixed length part */
30class recle : public rec_dlink {
31 //friend class rsle;
32public:
34 ViceStoreId storeid;
36 VnodeId dvnode;
37 Unique_t dunique;
38 unsigned size : 16; /* size of variable part - to simplify
39 calculating directory log size */
40 recvarl *vle; /* pointer to variable length part */
41
42 /* varl v; variable length class varl goes here */
43
44 int GetDumpSize(); // size of buffer for dumping entry
45 // public:
46 uint32_t index; /* index of entry in the log */
47 int seqno; /* monotonically increasing number for log records */
48 recle();
49 ~recle();
50 int FreeVarl() REQUIRES_TRANSACTION; /* free variable length part */
51 rec_dlist *HasList(); /* returns head of list of removed child's log */
52 void InitFromsle(rsle *)
53 REQUIRES_TRANSACTION; /* from another already initialized rsle */
54 char *DumpToBuf(int *);
55 void print();
56 void print(FILE *);
57 void print(int);
58};
59
60/* definition of the variable parts of each record */
61/* there are no constructors for these classes because
62 they are all members of a union */
63#define STSTORE 1
64#define ACLSTORE 2
65class aclstore {
66public:
67 int type;
69
70 void init(char *a);
71 void print(int);
72};
73
74class ststore {
75public:
76 int type;
77 UserId owner;
79 UserId author;
80 Date_t mtime;
81 ViceVersionVector vv; // at time of setattr
82
83 void init(UserId, RPC2_Unsigned, UserId, Date_t, ViceVersionVector *);
84 void print(int);
85};
86
87class newstore {
88public:
89 int type;
90 UserId owner;
92 UserId author;
93 Date_t mtime;
95 ViceVersionVector vv; // at time of setattr
96
97 void init(UserId, RPC2_Unsigned, UserId, Date_t, RPC2_Integer,
98 ViceVersionVector *);
99 void print(int);
100};
101
103public:
104 VnodeId cvnode;
105 Unique_t cunique;
106 UserId owner;
107 char name[1]; /* beginning of null terminated name of child created */
108 void init(VnodeId, Unique_t, UserId, char *);
109 void print(int);
110};
111
113public:
114 VnodeId cvnode;
115 Unique_t cunique;
116 UserId owner;
117 char name[1]; /* beginning of null terminated name of child created */
118 void init(VnodeId, Unique_t, UserId, char *);
119 void print(int);
120};
121
122class link_rle {
123public:
124 VnodeId cvnode;
125 Unique_t cunique;
126 ViceVersionVector cvv;
127 char name[1]; /* beginning of null terminated name of child created */
128 void init(VnodeId, Unique_t, ViceVersionVector *, char *);
129 void print(int);
130};
131
133public:
134 VnodeId cvnode;
135 Unique_t cunique;
136 UserId owner;
137 char name[1]; /* beginning of null terminated name of child created */
138 void init(VnodeId, Unique_t, UserId, char *);
139 void print(int);
140};
141
142class rm_rle {
143public:
144 VnodeId cvnode;
145 Unique_t cunique;
146 ViceVersionVector cvv; /* version vector for child when deleted */
147 char name[1]; /* beginning of null terminated name of child removed */
148 void init(VnodeId v, Unique_t u, ViceVersionVector *vv, char *s);
149 void print(int);
150};
151
153public:
154 VnodeId cvnode;
155 Unique_t cunique;
156 rec_dlist *childlist; /* deleted child's log */
157 ViceStoreId childLCP; /* childs lcp in log with other reps */
158 ViceStoreId csid; /* storeid of directory when deleted */
159 char name[1];
160
161 void init(VnodeId, Unique_t, rec_dlist *, ViceStoreId *lcp, ViceStoreId *,
162 char *);
163 void print(int);
164};
165
166#define SOURCE 0 /* source or target log record */
167#define TARGET 1
168
170public:
171 unsigned short type; /* is this directory SOURCE or TARGET */
172 VnodeId otherdirv; /* src/tgt dir spec */
173 Unique_t otherdiru;
174 VnodeId svnode;
175 Unique_t sunique;
176 ViceVersionVector svv; /* source's version vector when renamed */
177 VnodeId tvnode; /* target objects id: 0 if didn't exist */
178 Unique_t tunique;
179 ViceVersionVector tvv; /* target's vv when deleted */
180 rec_dlist *tlist; /* target's log if deleted directory */
181 unsigned short newname_offset; /* newname starts this many bytes away */
182 char oldname[1]; /* name of child before rename */
183 // char newname[1]; /* name of child after rename */
184 /* gets appended to oldname field */
185
186 void init(unsigned short, VnodeId, Unique_t, VnodeId, Unique_t,
187 ViceVersionVector *, char *old, char *, VnodeId tv = 0,
188 Unique_t tu = 0, ViceVersionVector *tgtvv = NULL,
189 rec_dlist *list = NULL);
190 void print(int);
191};
192
194public:
197
198 void init(int, int);
199 void print(int);
200};
201
202#endif /* _RECLE_H_ */
Definition: recle.h:65
int type
Definition: recle.h:67
Definition: recle.h:102
VnodeId cvnode
Definition: recle.h:104
UserId owner
Definition: recle.h:106
Unique_t cunique
Definition: recle.h:105
Definition: recle.h:132
UserId owner
Definition: recle.h:136
VnodeId cvnode
Definition: recle.h:134
Unique_t cunique
Definition: recle.h:135
Definition: recle.h:87
ViceVersionVector vv
Definition: recle.h:95
Date_t mtime
Definition: recle.h:93
RPC2_Integer mask
Definition: recle.h:94
UserId owner
Definition: recle.h:90
RPC2_Unsigned mode
Definition: recle.h:91
UserId author
Definition: recle.h:92
int type
Definition: recle.h:89
Definition: rec_dlist.h:49
Definition: recle.h:30
~recle()
Definition: recle.cc:50
uint32_t serverid
Definition: recle.h:33
recle()
Definition: recle.cc:45
int seqno
Definition: recle.h:47
void print()
Definition: recle.cc:286
void InitFromsle(rsle *) REQUIRES_TRANSACTION
Definition: recle.cc:55
unsigned size
Definition: recle.h:38
uint32_t index
Definition: recle.h:46
ViceStoreId storeid
Definition: recle.h:34
int GetDumpSize()
Definition: recle.cc:244
VnodeId dvnode
Definition: recle.h:36
int FreeVarl() REQUIRES_TRANSACTION
Definition: recle.cc:201
RPC2_Unsigned opcode
Definition: recle.h:35
char * DumpToBuf(int *)
Definition: recle.cc:260
Unique_t dunique
Definition: recle.h:37
rec_dlist * HasList()
Definition: recle.cc:215
recvarl * vle
Definition: recle.h:40
Definition: recvarl.h:32
Definition: recle.h:169
unsigned short type
Definition: recle.h:171
VnodeId tvnode
Definition: recle.h:177
Unique_t sunique
Definition: recle.h:175
Unique_t otherdiru
Definition: recle.h:173
VnodeId svnode
Definition: recle.h:174
VnodeId otherdirv
Definition: recle.h:172
ViceVersionVector svv
Definition: recle.h:176
Unique_t tunique
Definition: recle.h:178
rec_dlist * tlist
Definition: recle.h:180
ViceVersionVector tvv
Definition: recle.h:179
unsigned short newname_offset
Definition: recle.h:181
Definition: recle.h:142
VnodeId cvnode
Definition: recle.h:144
ViceVersionVector cvv
Definition: recle.h:146
Unique_t cunique
Definition: recle.h:145
Definition: recle.h:152
rec_dlist * childlist
Definition: recle.h:156
ViceStoreId csid
Definition: recle.h:158
ViceStoreId childLCP
Definition: recle.h:157
Unique_t cunique
Definition: recle.h:155
VnodeId cvnode
Definition: recle.h:154
Definition: rsle.h:45
Definition: recle.h:193
int newquota
Definition: recle.h:196
int oldquota
Definition: recle.h:195
Definition: recle.h:74
UserId owner
Definition: recle.h:77
int type
Definition: recle.h:76
Date_t mtime
Definition: recle.h:80
RPC2_Unsigned mode
Definition: recle.h:78
UserId author
Definition: recle.h:79
ViceVersionVector vv
Definition: recle.h:81
unsigned int uint32_t
Definition: coda.h:105
#define REQUIRES_TRANSACTION
Definition: coda_tsa.h:107
#define SIZEOF_LARGEDISKVNODE
Definition: cvnode.h:153
#define SIZEOF_SMALLDISKVNODE
Definition: cvnode.h:147
name
Definition: pwdtopdbtool.py:40
command_t list[]
Definition: repair.cc:29
int32_t RPC2_Integer
Definition: rpc2.h:297
uint32_t RPC2_Unsigned
Definition: rpc2.h:300
@ init
Definition: rvm_private.h:470
Definition: cfs.cc:440
#define NULL
Definition: voltypes.h:44