6253 F_GETLK doesn't always return lock owner
[illumos-gate.git] / usr / src / cmd / fs.d / cachefs / cfsd / cfsd_logelem.h
blobaba745a3b6426cd701eec3c31d94701cb7d0f1ee
1 /*
2 * CDDL HEADER START
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
7 * with the License.
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]
20 * CDDL HEADER END
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.
36 #ifdef __cplusplus
37 extern "C" {
38 #endif
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
55 /* BEGIN CSTYLED */
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)
79 /* END CSTYLED */
81 /* setattr */
82 typedef struct cfsd_logelem_setattr_object {
83 struct cfs_dlog_setattr *i_up;
84 } cfsd_logelem_setattr_object_t;
86 /* setsecattr */
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;
92 /* create */
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;
98 /* remove */
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;
104 /* rmdir */
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;
110 /* mkdir */
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;
116 /* link */
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;
122 /* symlink */
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;
129 /* rename */
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;
136 /* modify */
137 typedef struct cfsd_logelem_modified_object {
138 struct cfs_dlog_modify *i_up;
139 } cfsd_logelem_modified_object_t;
141 /* mapfid */
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;
156 off_t i_offset;
157 int i_type;
158 union {
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;
170 }i_operation;
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,
182 cfs_cid_t *cidp,
183 cfs_cid_t *pcidp,
184 const char *namep,
185 dl_cred_t *cred);
186 void logelem_problem(cfsd_logelem_object_t *logelem_object_p,
187 char *strp);
188 void logelem_resolution(cfsd_logelem_object_t *logelem_object_p,
189 char *strp);
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,
196 const char *namep);
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,
259 ulong_t *seqp);
260 int logelem_roll_setsecattr(cfsd_logelem_object_t *logelem_object_p,
261 ulong_t *seqp);
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,
268 ulong_t *seqp);
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,
271 ulong_t *seqp);
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);
287 #ifdef __cplusplus
289 #endif
291 #endif /* _CFSD_LOGELEM_H */