Coda Distributed File System
rsle.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 _RSLE_H
20#define _RSLE_H 1
21
22/*
23 * class SpoolListEntry(rsle - r stands for rvm to
24 * distinguish this from the sle
25 * entry spooled for vm resolution)
26 * log records spooled for a directory vnode.
27 * These are allocated in VM; only a slot has been reserved in RVM.
28 * all these records are copied to the RVM directory log during
29 * transaction commmit time.
30 */
31#ifdef __cplusplus
32extern "C" {
33#endif
34
35#include <stdarg.h>
36
37#ifdef __cplusplus
38}
39#endif
40
41#include <olist.h>
42#include "ops.h"
43#include "recle.h"
44
45class rsle : public olink {
46public:
47 int index; /* index of log entry when it will be placed in rvm */
48 int seqno;
49 ViceStoreId storeid;
50 VnodeId dvn;
51 Unique_t du;
53 union {
65 } u;
66 /* keep upto two names in a separate structure */
67 char *name1;
68 char *name2;
69 int namesalloced; // flag used to free space at destruction
70 //public:
71 rsle(ViceStoreId *, VnodeId, Unique_t, int op, int index = -1,
72 int sno = -1);
73 rsle();
74 ~rsle();
75 void init(int op...);
76 void init(int op, va_list ap);
78 void Abort(Volume *);
79 void InitFromRecleBuf(char **);
80 void print();
81 void print(FILE *);
82 void print(int);
83};
84
85extern int ExtractVNTypeFromrsle(rsle *);
86extern void ExtractChildFidFromrsle(rsle *, ViceFid *);
87extern char *ExtractNameFromrsle(rsle *);
88
89#endif /* _RSLE_H_ */
Definition: recle.h:65
Definition: recle.h:102
Definition: recle.h:132
Definition: recle.h:87
Definition: recle.h:169
Definition: recle.h:142
Definition: recle.h:152
Definition: rsle.h:45
rsle()
Definition: rsle.cc:63
int namesalloced
Definition: rsle.h:69
void Abort(Volume *)
Definition: rsle.cc:286
rmdir_rle rmdir
Definition: rsle.h:62
ststore st
Definition: rsle.h:55
int seqno
Definition: rsle.h:48
RPC2_Unsigned opcode
Definition: rsle.h:52
rm_rle rm
Definition: rsle.h:61
mkdir_rle mkdir
Definition: rsle.h:60
void InitFromRecleBuf(char **)
Definition: rsle.cc:295
char * name2
Definition: rsle.h:68
int index
Definition: rsle.h:47
aclstore acl
Definition: rsle.h:54
Unique_t du
Definition: rsle.h:51
union rsle::@0 u
void print()
Definition: rsle.cc:447
char * name1
Definition: rsle.h:67
link_rle link
Definition: rsle.h:59
rename_rle mv
Definition: rsle.h:63
void init(int op...)
Definition: rsle.cc:88
setquota_rle sq
Definition: rsle.h:64
ViceStoreId storeid
Definition: rsle.h:49
create_rle create
Definition: rsle.h:57
void CommitInRVM(Volume *, Vnode *) REQUIRES_TRANSACTION
Definition: rsle.cc:267
newstore newst
Definition: rsle.h:56
VnodeId dvn
Definition: rsle.h:50
symlink_rle slink
Definition: rsle.h:58
~rsle()
Definition: rsle.cc:76
Definition: recle.h:193
Definition: recle.h:74
#define REQUIRES_TRANSACTION
Definition: coda_tsa.h:107
uint32_t RPC2_Unsigned
Definition: rpc2.h:300
int ExtractVNTypeFromrsle(rsle *)
Definition: rsle.cc:618
void ExtractChildFidFromrsle(rsle *, ViceFid *)
Definition: rsle.cc:554
char * ExtractNameFromrsle(rsle *)
Definition: rsle.cc:527
Definition: cvnode.h:155
Definition: volume.h:234