blob: c0fb36b881343c45ff00370ce9017a23ab3bd806 (
plain)
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2001-2009 Oracle. All rights reserved.
*
* $Id$
*/
DBPRIVATE
PREFIX __fop
INCLUDE #include "db_int.h"
INCLUDE #include "dbinc/crypto.h"
INCLUDE #include "dbinc/db_page.h"
INCLUDE #include "dbinc/db_am.h"
INCLUDE #include "dbinc/log.h"
INCLUDE #include "dbinc/txn.h"
INCLUDE #include "dbinc/fop.h"
INCLUDE
/*
* create -- create a file system object.
*
* name: name in the file system
* appname: indicates if the name needs to go through __db_appname
* mode: file system mode
*/
BEGIN_COMPAT create 42 143
DBT name DBT s
ARG appname u_int32_t lu
ARG mode u_int32_t o
END
BEGIN create 48 143
DBT name DBT s
DBT dirname DBT s
ARG appname u_int32_t lu
ARG mode u_int32_t o
END
/*
* remove -- remove a file system object.
*
* name: name in the file system
* appname: indicates if the name needs to go through __db_appname
*/
BEGIN remove 42 144
DBT name DBT s
DBT fid DBT s
ARG appname u_int32_t lu
END
/*
* write: log the writing of data into an object.
*
* name: file containing the page.
* appname: indicates if the name needs to go through __db_appname
* pgsize: page size.
* pageno: page number in the file.
* offset: offset on the page.
* page: the actual meta-data page.
* flag: non-0 indicates that this is a tempfile, so we needn't undo
* these modifications (we'll toss the file).
*/
BEGIN_COMPAT write 42 145
DBT name DBT s
ARG appname u_int32_t lu
ARG pgsize u_int32_t lu
ARG pageno db_pgno_t lu
ARG offset u_int32_t lu
DBT page DBT s
ARG flag u_int32_t lu
END
BEGIN write 48 145
DBT name DBT s
DBT dirname DBT s
ARG appname u_int32_t lu
ARG pgsize u_int32_t lu
ARG pageno db_pgno_t lu
ARG offset u_int32_t lu
DBT page DBT s
ARG flag u_int32_t lu
END
/*
* rename: move a file from one name to another.
* The appname value indicates if this is a path name that should be used
* directly (i.e., no interpretation) or if it is a pathname that should
* be interpreted via calls to __db_appname. The fileid is the 20-byte
* DB fileid of the file being renamed. We need to check it on recovery
* so that we don't inadvertently overwrite good files.
*
* There are two variants of this log record: one that must be both done
* and undone and one that is not undone (used for renaming tmp files, see
* SR #15119)
*
* These two record types use the same structure, read, and print functions,
* but have different recovery functions.
*/
BEGIN_COMPAT rename 42 146
DUPLICATE rename_noundo 46 150
DBT oldname DBT s
DBT newname DBT s
DBT fileid DBT s
ARG appname u_int32_t lu
END
BEGIN rename 48 146
DUPLICATE rename_noundo 46 150
DBT oldname DBT s
DBT newname DBT s
DBT dirname DBT s
DBT fileid DBT s
ARG appname u_int32_t lu
END
/*
* File removal record. This is a DB-level log record that indicates
* we've just completed some form of file removal. The purpose of this
* log record is to logically identify the particular instance of the
* named file so that during recovery, in deciding if we should roll-forward
* a remove or a rename, we can make sure that we don't roll one forward and
* delete or overwrite the wrong file.
* real_fid: The 20-byte unique file identifier of the original file being
* removed.
* tmp_fid: The unique fid of the tmp file that is removed.
* name: The pre- __db_appname name of the file
* child: The transaction that removed or renamed the file.
*/
*/
BEGIN file_remove 42 141
DBT real_fid DBT s
DBT tmp_fid DBT s
DBT name DBT s
ARG appname u_int32_t lu
ARG child u_int32_t lx
END
|