4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
23 * Copyright 1994-2003 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
27 #ifndef _CFSD_LOGELEM_H
28 #define _CFSD_LOGELEM_H
30 #pragma ident "%Z%%M% %I% %E% SMI"
33 * Include file for the logelem class.
40 /* typedefs for logelem type */
41 #define NO_OBJECT_TYPE 0
42 #define SETATTR_OBJECT_TYPE 1
43 #define SETSECATTR_OBJECT_TYPE 2
44 #define CREATE_OBJECT_TYPE 3
45 #define REMOVE_OBJECT_TYPE 4
46 #define RMDIR_OBJECT_TYPE 5
47 #define MKDIR_OBJECT_TYPE 6
48 #define LINK_OBJECT_TYPE 7
49 #define SYMLINK_OBJECT_TYPE 8
50 #define RENAME_OBJECT_TYPE 9
51 #define MODIFIED_OBJECT_TYPE 10
52 #define MAPFID_OBJECT_TYPE 11
54 #define CFSDMesgMax 4096
56 /* defines for refrencing objects */
57 #define SETATTR_OBJECT(ptr) ptr->i_operation.i_setattr_object
58 #define SETATTR_OBJECT_PTR(ptr) &(ptr->i_operation.i_setattr_object)
59 #define SETSECATTR_OBJECT(ptr) ptr->i_operation.i_setsecattr_object
60 #define SETSECATTR_OBJECT_PTR(ptr) &(ptr->i_operation.i_setsecattr_object)
61 #define CREATE_OBJECT(ptr) ptr->i_operation.i_create_object
62 #define CREATE_OBJECT_PTR(ptr) &(ptr->i_operation.i_create_object)
63 #define REMOVE_OBJECT(ptr) ptr->i_operation.i_remove_object
64 #define REMOVE_OBJECT_PTR(ptr) &(ptr->i_operation.i_remove_object)
65 #define RMDIR_OBJECT(ptr) ptr->i_operation.i_rmdir_object
66 #define RMDIR_OBJECT_PTR(ptr) &(ptr->i_operation.i_rmdir_object)
67 #define MKDIR_OBJECT(ptr) ptr->i_operation.i_mkdir_object
68 #define MKDIR_OBJECT_PTR(ptr) &(ptr->i_operation.i_mkdir_object)
69 #define LINK_OBJECT(ptr) ptr->i_operation.i_link_object
70 #define LINK_OBJECT_PTR(ptr) &(ptr->i_operation.i_link_object)
71 #define SYMLINK_OBJECT(ptr) ptr->i_operation.i_symlink_object
72 #define SYMLINK_OBJECT_PTR(ptr) &(ptr->i_operation.i_symlink_object)
73 #define RENAME_OBJECT(ptr) ptr->i_operation.i_rename_object
74 #define RENAME_OBJECT_PTR(ptr) &(ptr->i_operation.i_rename_object)
75 #define MODIFIED_OBJECT(ptr) ptr->i_operation.i_modified_object
76 #define MODIFIED_OBJECT_PTR(ptr) &(ptr->i_operation.i_modified_object)
77 #define MAPFID_OBJECT(ptr) ptr->i_operation.i_mapfid_object
78 #define MAPFID_OBJECT_PTR(ptr) &(ptr->i_operation.i_mapfid_object)
82 typedef struct cfsd_logelem_setattr_object
{
83 struct cfs_dlog_setattr
*i_up
;
84 } cfsd_logelem_setattr_object_t
;
87 typedef struct cfsd_logelem_setsecattr_oject
{
88 struct cfs_dlog_setsecattr
*i_up
;
89 const aclent_t
*i_acl
;
90 } cfsd_logelem_setsecattr_object_t
;
93 typedef struct cfsd_logelem_create_object
{
94 struct cfs_dlog_create
*i_up
;
95 const char *i_namep
; /* name of file to create */
96 } cfsd_logelem_create_object_t
;
99 typedef struct cfsd_logelem_remove_object
{
100 struct cfs_dlog_remove
*i_up
;
101 const char *i_namep
; /* name of file to remove */
102 } cfsd_logelem_remove_object_t
;
105 typedef struct cfsd_logelem_rmdir_object
{
106 struct cfs_dlog_rmdir
*i_up
;
107 const char *i_namep
; /* name of dir to rmdir */
108 } cfsd_logelem_rmdir_object_t
;
111 typedef struct cfsd_logelem_mkdir_object
{
112 struct cfs_dlog_mkdir
*i_up
;
113 const char *i_namep
; /* name of dir to mkdir */
114 } cfsd_logelem_mkdir_object_t
;
117 typedef struct cfsd_logelem_link_object
{
118 struct cfs_dlog_link
*i_up
;
119 const char *i_namep
; /* name of link */
120 } cfsd_logelem_link_object_t
;
123 typedef struct cfsd_logelem_symlink_object
{
124 struct cfs_dlog_symlink
*i_up
;
125 const char *i_namep
; /* name of symlink */
126 const char *i_contentsp
; /* contents of symlink */
127 } cfsd_logelem_symlink_object_t
;
130 typedef struct cfsd_logelem_rename_object
{
131 struct cfs_dlog_rename
*i_up
;
132 const char *i_orignamep
; /* original name */
133 const char *i_newnamep
; /* new name */
134 } cfsd_logelem_rename_object_t
;
137 typedef struct cfsd_logelem_modified_object
{
138 struct cfs_dlog_modify
*i_up
;
139 } cfsd_logelem_modified_object_t
;
142 typedef struct cfsd_logelem_mapfid_object
{
143 struct cfs_dlog_mapfid
*i_up
;
144 } cfsd_logelem_mapfid_object_t
;
146 /* Abstract base class used by the other logelem classes. */
147 #define LOGELM_FIDBUFLEN 1024
148 typedef struct cfsd_logelem_object
{
150 cfsd_maptbl_object_t
*i_maptbl_object_p
;
151 cfsd_logfile_object_t
*i_logfile_object_p
;
152 cfsd_kmod_object_t
*i_kmod_object_p
;
153 char i_messagep
[CFSDMesgMax
]; /* message */
154 char i_fidbuf
[LOGELM_FIDBUFLEN
]; /* debugging */
155 cfs_dlog_entry_t
*i_entp
;
159 cfsd_logelem_setattr_object_t i_setattr_object
;
160 cfsd_logelem_setsecattr_object_t i_setsecattr_object
;
161 cfsd_logelem_create_object_t i_create_object
;
162 cfsd_logelem_remove_object_t i_remove_object
;
163 cfsd_logelem_rmdir_object_t i_rmdir_object
;
164 cfsd_logelem_mkdir_object_t i_mkdir_object
;
165 cfsd_logelem_link_object_t i_link_object
;
166 cfsd_logelem_symlink_object_t i_symlink_object
;
167 cfsd_logelem_rename_object_t i_rename_object
;
168 cfsd_logelem_modified_object_t i_modified_object
;
169 cfsd_logelem_mapfid_object_t i_mapfid_object
;
171 }cfsd_logelem_object_t
;
173 cfsd_logelem_object_t
*cfsd_logelem_create(
174 cfsd_maptbl_object_t
*maptbl_object_p
,
175 cfsd_logfile_object_t
*logfile_object_p
,
176 cfsd_kmod_object_t
*kmod_object_p
);
177 void cfsd_logelem_destroy(cfsd_logelem_object_t
*logelem_object_p
);
178 void logelem_print_cred(dl_cred_t
*credp
);
179 void logelem_print_attr(vattr_t
*vp
);
180 void logelem_format_fid(cfsd_logelem_object_t
*logelem_object_p
, fid_t
*fidp
);
181 int logelem_lostfound(cfsd_logelem_object_t
*logelem_object_p
,
186 void logelem_problem(cfsd_logelem_object_t
*logelem_object_p
,
188 void logelem_resolution(cfsd_logelem_object_t
*logelem_object_p
,
190 void logelem_message_append(char *strp1
, char *strp2
);
191 void logelem_message(cfsd_logelem_object_t
*logelem_object_p
,
192 char *prefix
, char *strp
);
193 void logelem_log_opfailed(cfsd_logelem_object_t
*logelem_object_p
,
194 char *opp
, char *info
, const char *namep
, int xx
);
195 void logelem_log_opskipped(cfsd_logelem_object_t
*logelem_object_p
,
197 void logelem_log_timelogmesg(cfsd_logelem_object_t
*logelem_object_p
,
198 char *opp
, const char *namep
, char *mesgp
, int time_log
);
201 cfsd_logelem_object_t
*cfsd_logelem_setattr_create(
202 cfsd_maptbl_object_t
*maptbl_object_p
,
203 cfsd_logfile_object_t
*logfile_object_p
,
204 cfsd_kmod_object_t
*kmod_object_p
);
206 cfsd_logelem_object_t
*cfsd_logelem_setsecattr_create(
207 cfsd_maptbl_object_t
*maptbl_object_p
,
208 cfsd_logfile_object_t
*logfile_object_p
,
209 cfsd_kmod_object_t
*kmod_object_p
);
211 cfsd_logelem_object_t
*cfsd_logelem_create_create(
212 cfsd_maptbl_object_t
*maptbl_object_p
,
213 cfsd_logfile_object_t
*logfile_object_p
,
214 cfsd_kmod_object_t
*kmod_object_p
);
216 cfsd_logelem_object_t
*cfsd_logelem_remove_create(
217 cfsd_maptbl_object_t
*maptbl_object_p
,
218 cfsd_logfile_object_t
*logfile_object_p
,
219 cfsd_kmod_object_t
*kmod_object_p
);
221 cfsd_logelem_object_t
*cfsd_logelem_rmdir_create(
222 cfsd_maptbl_object_t
*maptbl_object_p
,
223 cfsd_logfile_object_t
*logfile_object_p
,
224 cfsd_kmod_object_t
*kmod_object_p
);
226 cfsd_logelem_object_t
*cfsd_logelem_mkdir_create(
227 cfsd_maptbl_object_t
*maptbl_object_p
,
228 cfsd_logfile_object_t
*logfile_object_p
,
229 cfsd_kmod_object_t
*kmod_object_p
);
231 cfsd_logelem_object_t
*cfsd_logelem_link_create(
232 cfsd_maptbl_object_t
*maptbl_object_p
,
233 cfsd_logfile_object_t
*logfile_object_p
,
234 cfsd_kmod_object_t
*kmod_object_p
);
236 cfsd_logelem_object_t
*cfsd_logelem_symlink_create(
237 cfsd_maptbl_object_t
*maptbl_object_p
,
238 cfsd_logfile_object_t
*logfile_object_p
,
239 cfsd_kmod_object_t
*kmod_object_p
);
241 cfsd_logelem_object_t
*cfsd_logelem_rename_create(
242 cfsd_maptbl_object_t
*maptbl_object_p
,
243 cfsd_logfile_object_t
*logfile_object_p
,
244 cfsd_kmod_object_t
*kmod_object_p
);
246 cfsd_logelem_object_t
*cfsd_logelem_modified_create(
247 cfsd_maptbl_object_t
*maptbl_object_p
,
248 cfsd_logfile_object_t
*logfile_object_p
,
249 cfsd_kmod_object_t
*kmod_object_p
);
251 cfsd_logelem_object_t
*cfsd_logelem_mapfid_create(
252 cfsd_maptbl_object_t
*maptbl_object_p
,
253 cfsd_logfile_object_t
*logfile_object_p
,
254 cfsd_kmod_object_t
*kmod_object_p
);
256 int logelem_roll(cfsd_logelem_object_t
*logelem_object_p
, ulong_t
*seqp
);
258 int logelem_roll_setattr(cfsd_logelem_object_t
*logelem_object_p
,
260 int logelem_roll_setsecattr(cfsd_logelem_object_t
*logelem_object_p
,
262 int logelem_roll_create(cfsd_logelem_object_t
*logelem_object_p
, ulong_t
*seqp
);
263 int logelem_roll_remove(cfsd_logelem_object_t
*logelem_object_p
, ulong_t
*seqp
);
264 int logelem_roll_rmdir(cfsd_logelem_object_t
*logelem_object_p
, ulong_t
*seqp
);
265 int logelem_roll_mkdir(cfsd_logelem_object_t
*logelem_object_p
, ulong_t
*seqp
);
266 int logelem_roll_link(cfsd_logelem_object_t
*logelem_object_p
, ulong_t
*seqp
);
267 int logelem_roll_symlink(cfsd_logelem_object_t
*logelem_object_p
,
269 int logelem_roll_rename(cfsd_logelem_object_t
*logelem_object_p
, ulong_t
*seqp
);
270 int logelem_roll_modified(cfsd_logelem_object_t
*logelem_object_p
,
272 int logelem_roll_mapfid(cfsd_logelem_object_t
*logelem_object_p
);
274 void logelem_dump(cfsd_logelem_object_t
*logelem_object_p
);
275 void logelem_dump_setattr(cfsd_logelem_object_t
*logelem_object_p
);
276 void logelem_dump_setsecattr(cfsd_logelem_object_t
*logelem_object_p
);
277 void logelem_dump_create(cfsd_logelem_object_t
*logelem_object_p
);
278 void logelem_dump_remove(cfsd_logelem_object_t
*logelem_object_p
);
279 void logelem_dump_rmdir(cfsd_logelem_object_t
*logelem_object_p
);
280 void logelem_dump_mkdir(cfsd_logelem_object_t
*logelem_object_p
);
281 void logelem_dump_link(cfsd_logelem_object_t
*logelem_object_p
);
282 void logelem_dump_symlink(cfsd_logelem_object_t
*logelem_object_p
);
283 void logelem_dump_rename(cfsd_logelem_object_t
*logelem_object_p
);
284 void logelem_dump_modified(cfsd_logelem_object_t
*logelem_object_p
);
285 void logelem_dump_mapfid(cfsd_logelem_object_t
*logelem_object_p
);
291 #endif /* _CFSD_LOGELEM_H */