| 1 | /* |
| 2 | * Copyright 2000, International Business Machines Corporation and others. |
| 3 | * All Rights Reserved. |
| 4 | * |
| 5 | * This software has been released under the terms of the IBM Public |
| 6 | * License. For details, see the LICENSE file in the top-level source |
| 7 | * directory or online at http://www.openafs.org/dl/license10.html |
| 8 | */ |
| 9 | |
| 10 | #ifndef _AFS_PROTOTYPES_H_ |
| 11 | #define _AFS_PROTOTYPES_H_ |
| 12 | |
| 13 | /* afs_analyze.c */ |
| 14 | extern int afs_Analyze(struct afs_conn *aconn, struct rx_connection *rxconn, |
| 15 | afs_int32 acode, struct VenusFid *afid, |
| 16 | struct vrequest *areq, |
| 17 | int op, afs_int32 locktype, struct cell *cellp); |
| 18 | |
| 19 | /* afs_axscache.c */ |
| 20 | extern afs_rwlock_t afs_xaxs; |
| 21 | extern struct axscache *afs_SlowFindAxs(struct axscache **cachep, |
| 22 | afs_int32 id); |
| 23 | extern struct axscache *axs_Alloc(void); |
| 24 | extern void afs_RemoveAxs(struct axscache **headp, struct axscache *axsp); |
| 25 | extern void afs_FreeAllAxs(struct axscache **headp); |
| 26 | extern void shutdown_xscache(void); |
| 27 | |
| 28 | /* afs_buffer.c */ |
| 29 | extern void shutdown_bufferpackage(void); |
| 30 | |
| 31 | /* afs_call.c */ |
| 32 | extern int afs_cold_shutdown; |
| 33 | extern char afs_rootVolumeName[MAXROOTVOLNAMELEN]; |
| 34 | extern void afs_shutdown(void); |
| 35 | extern void afs_FlushCBs(void); |
| 36 | extern int afs_CheckInit(void); |
| 37 | extern void afs_shutdown(void); |
| 38 | extern void shutdown_afstest(void); |
| 39 | extern int afs_syscall_call(long parm, long parm2, long parm3, |
| 40 | long parm4, long parm5, long parm6); |
| 41 | #if defined(AFS_DARWIN100_ENV) |
| 42 | extern int afs_syscall64_call(user_addr_t parm, user_addr_t parm2, |
| 43 | user_addr_t parm3, user_addr_t parm4, |
| 44 | user_addr_t parm5, user_addr_t parm6); |
| 45 | #endif |
| 46 | |
| 47 | |
| 48 | /* afs_callback.c */ |
| 49 | extern afs_int32 afs_allCBs; |
| 50 | extern afs_int32 afs_oddCBs; |
| 51 | extern afs_int32 afs_evenCBs; |
| 52 | extern afs_int32 afs_allZaps; |
| 53 | extern afs_int32 afs_oddZaps; |
| 54 | extern afs_int32 afs_evenZaps; |
| 55 | extern afs_int32 afs_connectBacks; |
| 56 | extern unsigned long lastCallBack_vnode; |
| 57 | extern unsigned int lastCallBack_dv; |
| 58 | extern osi_timeval_t lastCallBack_time; |
| 59 | extern struct interfaceAddr afs_cb_interface; |
| 60 | |
| 61 | extern int afs_RXCallBackServer(void); |
| 62 | extern int SRXAFSCB_GetCE(struct rx_call *a_call, afs_int32 a_index, |
| 63 | struct AFSDBCacheEntry *a_result); |
| 64 | extern int SRXAFSCB_GetCE64(struct rx_call *a_call, afs_int32 a_index, |
| 65 | struct AFSDBCacheEntry64 *a_result); |
| 66 | extern int SRXAFSCB_GetLock(struct rx_call *a_call, afs_int32 a_index, |
| 67 | struct AFSDBLock *a_result); |
| 68 | extern int SRXAFSCB_CallBack(struct rx_call *a_call, |
| 69 | struct AFSCBFids *a_fids, |
| 70 | struct AFSCBs *a_callbacks); |
| 71 | extern int SRXAFSCB_Probe(struct rx_call *a_call); |
| 72 | extern int SRXAFSCB_InitCallBackState(struct rx_call *a_call); |
| 73 | extern int SRXAFSCB_XStatsVersion(struct rx_call *a_call, |
| 74 | afs_int32 * a_versionP); |
| 75 | extern int SRXAFSCB_GetXStats(struct rx_call *a_call, |
| 76 | afs_int32 a_clientVersionNum, |
| 77 | afs_int32 a_collectionNumber, |
| 78 | afs_int32 * a_srvVersionNumP, |
| 79 | afs_int32 * a_timeP, AFSCB_CollData * a_dataP); |
| 80 | extern int afs_RXCallBackServer(void); |
| 81 | extern int shutdown_CB(void); |
| 82 | extern int SRXAFSCB_InitCallBackState2(struct rx_call *a_call, |
| 83 | struct interfaceAddr *addr); |
| 84 | extern int SRXAFSCB_WhoAreYou(struct rx_call *a_call, |
| 85 | struct interfaceAddr *addr); |
| 86 | extern int SRXAFSCB_InitCallBackState3(struct rx_call *a_call, |
| 87 | afsUUID * a_uuid); |
| 88 | extern int SRXAFSCB_ProbeUuid(struct rx_call *a_call, afsUUID * a_uuid); |
| 89 | extern int SRXAFSCB_GetServerPrefs(struct rx_call *a_call, afs_int32 a_index, |
| 90 | afs_int32 * a_srvr_addr, |
| 91 | afs_int32 * a_srvr_rank); |
| 92 | extern int SRXAFSCB_GetCellServDB(struct rx_call *a_call, afs_int32 a_index, |
| 93 | char **a_name, serverList * a_hosts); |
| 94 | extern int SRXAFSCB_GetLocalCell(struct rx_call *a_call, char **a_name); |
| 95 | extern int SRXAFSCB_GetCacheConfig(struct rx_call *a_call, |
| 96 | afs_uint32 callerVersion, |
| 97 | afs_uint32 * serverVersion, |
| 98 | afs_uint32 * configCount, |
| 99 | cacheConfig * config); |
| 100 | extern int SRXAFSCB_FetchData(struct rx_call *rxcall, struct AFSFid *Fid, |
| 101 | afs_int32 Fd, afs_int64 Position, |
| 102 | afs_int64 Length, afs_int64 * TotalLength); |
| 103 | extern int SRXAFSCB_StoreData(struct rx_call *rxcall, struct AFSFid *Fid, |
| 104 | afs_int32 Fd, afs_int64 Position, |
| 105 | afs_int64 Length, afs_int64 * TotalLength); |
| 106 | |
| 107 | |
| 108 | /* afs_cbqueue.c */ |
| 109 | extern afs_rwlock_t afs_xcbhash; |
| 110 | extern void afs_QueueCallback(struct vcache *avc, unsigned int atime, |
| 111 | struct volume *avp); |
| 112 | extern void afs_CheckCallbacks(unsigned int secs); |
| 113 | extern void afs_FlushCBs(void); |
| 114 | extern void afs_FlushServerCBs(struct server *srvp); |
| 115 | extern int afs_BumpBase(void); |
| 116 | extern void afs_InitCBQueue(int doLockInit); |
| 117 | extern void afs_DequeueCallback(struct vcache *avc); |
| 118 | |
| 119 | /* afs_cell.c */ |
| 120 | extern afs_int32 afs_cellindex; |
| 121 | extern afs_rwlock_t afs_xcell; |
| 122 | extern afs_rwlock_t afsdb_client_lock; |
| 123 | extern afs_rwlock_t afsdb_req_lock; |
| 124 | extern struct afs_q CellLRU; |
| 125 | |
| 126 | extern void afs_CellInit(void); |
| 127 | extern void shutdown_cell(void); |
| 128 | extern int afs_cellname_init(afs_dcache_id_t *inode, int lookupcode); |
| 129 | extern int afs_cellname_write(void); |
| 130 | extern afs_int32 afs_NewCell(char *acellName, afs_int32 * acellHosts, |
| 131 | int aflags, char *linkedcname, u_short fsport, |
| 132 | u_short vlport, int timeout); |
| 133 | extern afs_int32 afs_SetPrimaryCell(char *acellName); |
| 134 | extern struct cell *afs_GetCell(afs_int32 acell, afs_int32 locktype); |
| 135 | extern struct cell *afs_GetCellStale(afs_int32 acell, afs_int32 locktype); |
| 136 | extern struct cell *afs_GetCellByHandle(void *handle, afs_int32 locktype); |
| 137 | extern struct cell *afs_GetCellByIndex(afs_int32 cellidx, afs_int32 locktype); |
| 138 | extern struct cell *afs_GetCellByName(char *acellName, afs_int32 locktype); |
| 139 | extern struct cell *afs_GetPrimaryCell(afs_int32 locktype); |
| 140 | extern afs_int32 afs_GetPrimaryCellNum(void); |
| 141 | extern int afs_IsPrimaryCellNum(afs_int32 cellnum); |
| 142 | extern int afs_IsPrimaryCell(struct cell *cell); |
| 143 | extern void *afs_TraverseCells(void *(*cb) (struct cell *, void *), |
| 144 | void *arg); |
| 145 | extern int afs_CellOrAliasExists(char *aname); |
| 146 | extern int afs_CellNumValid(afs_int32 cellnum); |
| 147 | extern afs_int32 afs_NewCellAlias(char *alias, char *cell); |
| 148 | extern struct cell_alias *afs_GetCellAlias(int index); |
| 149 | extern void afs_PutCellAlias(struct cell_alias *a); |
| 150 | extern int afs_AFSDBHandler(char *acellName, int acellNameLen, |
| 151 | afs_int32 * kernelMsg); |
| 152 | extern void afs_LookupAFSDB(char *acellName); |
| 153 | extern void afs_StopAFSDB(void); |
| 154 | extern void afs_RemoveCellEntry(struct server *srvp); |
| 155 | |
| 156 | /* afs_chunk.c */ |
| 157 | extern afs_int32 afs_FirstCSize; |
| 158 | extern afs_int32 afs_OtherCSize; |
| 159 | extern afs_int32 afs_LogChunk; |
| 160 | |
| 161 | /* afs_cell.c */ |
| 162 | extern struct cell *afs_GetRealCellByIndex(afs_int32 cellindex, |
| 163 | afs_int32 locktype, |
| 164 | afs_int32 refresh); |
| 165 | |
| 166 | /* afs_conn.c */ |
| 167 | extern afs_int32 cryptall; |
| 168 | extern afs_rwlock_t afs_xinterface; |
| 169 | extern afs_rwlock_t afs_xconn; |
| 170 | extern struct afs_conn *afs_Conn(struct VenusFid *afid, |
| 171 | struct vrequest *areq, |
| 172 | afs_int32 locktype, |
| 173 | struct rx_connection **rxconn); |
| 174 | extern struct afs_conn *afs_ConnBySA(struct srvAddr *sap, unsigned short aport, |
| 175 | afs_int32 acell, struct unixuser *tu, |
| 176 | int force_if_down, afs_int32 create, |
| 177 | afs_int32 locktype, afs_int32 replicated, |
| 178 | struct rx_connection **rxconn); |
| 179 | extern struct afs_conn *afs_ConnByMHosts(struct server *ahosts[], |
| 180 | unsigned short aport, afs_int32 acell, |
| 181 | struct vrequest *areq, |
| 182 | afs_int32 locktype, |
| 183 | afs_int32 replicated, |
| 184 | struct rx_connection **rxconn); |
| 185 | extern struct afs_conn *afs_ConnByHost(struct server *aserver, |
| 186 | unsigned short aport, afs_int32 acell, |
| 187 | struct vrequest *areq, int aforce, |
| 188 | afs_int32 locktype, |
| 189 | afs_int32 replicated, |
| 190 | struct rx_connection **rxconn); |
| 191 | extern void afs_PutConn(struct afs_conn *ac, struct rx_connection *rxconn, |
| 192 | afs_int32 locktype); |
| 193 | extern void afs_ReleaseConns(struct sa_conn_vector *tcv); |
| 194 | extern void afs_ReleaseConnsUser(register struct unixuser *au); |
| 195 | extern void ForceNewConnections(struct srvAddr *sap); |
| 196 | |
| 197 | |
| 198 | /* afs_daemons.c */ |
| 199 | extern afs_lock_t afs_xbrs; |
| 200 | extern short afs_brsWaiters; |
| 201 | extern short afs_brsDaemons; |
| 202 | extern struct brequest afs_brs[NBRS]; |
| 203 | extern struct afs_osi_WaitHandle AFS_WaitHandler, AFS_CSWaitHandler; |
| 204 | extern afs_int32 afs_gcpags; |
| 205 | extern afs_int32 afs_gcpags_procsize; |
| 206 | extern afs_int32 afs_CheckServerDaemonStarted; |
| 207 | extern afs_int32 afs_probe_interval; |
| 208 | extern afs_int32 afs_preCache; |
| 209 | |
| 210 | extern void afs_Daemon(void); |
| 211 | extern struct brequest *afs_BQueue(short aopcode, |
| 212 | struct vcache *avc, |
| 213 | afs_int32 dontwait, afs_int32 ause, |
| 214 | afs_ucred_t *acred, |
| 215 | afs_size_t asparm0, afs_size_t asparm1, |
| 216 | void *apparm0, void *apparm1, |
| 217 | void *apparm2); |
| 218 | extern void afs_SetCheckServerNATmode(int isnat); |
| 219 | extern void afs_CheckServerDaemon(void); |
| 220 | extern int afs_CheckRootVolume(void); |
| 221 | extern void afs_BRelease(struct brequest *ab); |
| 222 | extern int afs_BBusy(void); |
| 223 | extern int afs_BioDaemon(afs_int32 nbiods); |
| 224 | #ifdef AFS_NEW_BKG |
| 225 | extern int afs_BackgroundDaemon(struct afs_uspc_param *uspc, void *param1, void *param2); |
| 226 | #else |
| 227 | extern void afs_BackgroundDaemon(void); |
| 228 | #endif |
| 229 | extern void shutdown_daemons(void); |
| 230 | extern int afs_sgidaemon(void); |
| 231 | |
| 232 | |
| 233 | /* afs_dcache.c */ |
| 234 | extern u_int afs_min_cache; |
| 235 | extern afs_int32 *afs_dvhashTbl; |
| 236 | extern afs_int32 afs_dhashsize; |
| 237 | extern afs_rwlock_t afs_xdcache; |
| 238 | extern afs_size_t afs_vmMappingEnd; |
| 239 | extern afs_int32 afs_blocksUsed; |
| 240 | extern afs_int32 afs_blocksDiscarded; |
| 241 | extern int afs_WaitForCacheDrain; |
| 242 | extern int cacheDiskType; |
| 243 | extern afs_uint32 afs_tpct1, afs_tpct2, splitdcache; |
| 244 | extern unsigned char *afs_indexFlags; |
| 245 | extern struct afs_cacheOps *afs_cacheType; |
| 246 | extern afs_dcache_id_t cacheInode; |
| 247 | extern struct osi_file *afs_cacheInodep; |
| 248 | extern int DCHash(struct VenusFid *fid, afs_int32 chunk); |
| 249 | extern int DVHash(struct VenusFid *fid); |
| 250 | extern int afs_dcacheInit(int afiles, int ablocks, int aDentries, int achunk, |
| 251 | int aflags); |
| 252 | extern int afs_PutDCache(struct dcache *adc); |
| 253 | extern void afs_FlushDCache(struct dcache *adc); |
| 254 | extern void shutdown_dcache(void); |
| 255 | extern void afs_CacheTruncateDaemon(void); |
| 256 | extern afs_int32 afs_fsfragsize; |
| 257 | extern struct dcache *afs_MemGetDSlot(afs_int32 aslot, dslot_state type); |
| 258 | extern struct dcache *afs_GetDCache(struct vcache *avc, |
| 259 | afs_size_t abyte, |
| 260 | struct vrequest *areq, |
| 261 | afs_size_t * aoffset, afs_size_t * alen, |
| 262 | int aflags); |
| 263 | extern struct dcache *afs_FindDCache(struct vcache *avc, |
| 264 | afs_size_t abyte); |
| 265 | extern void afs_StoreWarn(afs_int32 acode, afs_int32 avolume, |
| 266 | afs_int32 aflags); |
| 267 | extern void afs_MaybeWakeupTruncateDaemon(void); |
| 268 | extern void afs_CacheTruncateDaemon(void); |
| 269 | extern void afs_AdjustSize(struct dcache *adc, |
| 270 | afs_int32 newSize); |
| 271 | extern int afs_HashOutDCache(struct dcache *adc, int zap); |
| 272 | extern int afs_MaybeFreeDiscardedDCache(void); |
| 273 | extern int afs_RefDCache(struct dcache *adc); |
| 274 | extern void afs_TryToSmush(struct vcache *avc, |
| 275 | afs_ucred_t *acred, int sync); |
| 276 | extern void updateV2DC(int lockVc, struct vcache *v, struct dcache *d, |
| 277 | int src); |
| 278 | extern int afs_WriteThroughDSlots(void); |
| 279 | extern struct dcache *afs_UFSGetDSlot(afs_int32 aslot, dslot_state type); |
| 280 | extern int afs_WriteDCache(struct dcache *adc, int atime); |
| 281 | extern int afs_wakeup(struct vcache *avc); |
| 282 | extern int afs_InitCacheFile(char *afile, ino_t ainode); |
| 283 | extern int afs_DCacheMissingChunks(struct vcache *avc); |
| 284 | extern struct dcache *afs_ObtainDCacheForWriting(struct vcache *avc, |
| 285 | afs_size_t filePos, |
| 286 | afs_size_t len, |
| 287 | struct vrequest *areq, |
| 288 | int noLock); |
| 289 | extern void afs_PopulateDCache(struct vcache *avc, afs_size_t apos, |
| 290 | struct vrequest *areq); |
| 291 | |
| 292 | /* afs_disconnected.c */ |
| 293 | |
| 294 | /* afs_dynroot.c */ |
| 295 | extern afs_rwlock_t afs_dynrootDirLock; |
| 296 | extern afs_rwlock_t afs_dynSymlinkLock; |
| 297 | extern int afs_IsDynrootVolume(struct volume *v); |
| 298 | extern int afs_IsDynrootFid(struct VenusFid *fid); |
| 299 | extern int afs_IsDynrootMountFid(struct VenusFid *fid); |
| 300 | extern int afs_IsDynrootAnyFid(struct VenusFid *fid); |
| 301 | extern void afs_GetDynrootFid(struct VenusFid *fid); |
| 302 | extern void afs_GetDynrootMountFid(struct VenusFid *fid); |
| 303 | extern int afs_IsDynroot(struct vcache *avc); |
| 304 | extern int afs_IsDynrootMount(struct vcache *avc); |
| 305 | extern int afs_IsDynrootAny(struct vcache *avc); |
| 306 | extern void afs_DynrootInvalidate(void); |
| 307 | extern void afs_GetDynroot(char **dynrootDir, int *dynrootLen, |
| 308 | struct AFSFetchStatus *status); |
| 309 | extern void afs_GetDynrootMount(char **dynrootDir, int *dynrootLen, |
| 310 | struct AFSFetchStatus *status); |
| 311 | extern void afs_PutDynroot(void); |
| 312 | extern int afs_DynrootNewVnode(struct vcache *avc, |
| 313 | struct AFSFetchStatus *status); |
| 314 | extern int afs_InitDynroot(void); |
| 315 | extern int afs_SetDynrootEnable(int enable); |
| 316 | extern int afs_GetDynrootEnable(void); |
| 317 | extern int afs_DynrootVOPRemove(struct vcache *avc, afs_ucred_t *acred, |
| 318 | char *aname); |
| 319 | extern int afs_DynrootVOPSymlink(struct vcache *avc, afs_ucred_t *acred, |
| 320 | char *aname, char *atargetName); |
| 321 | |
| 322 | /* afs_error.c */ |
| 323 | extern void init_et_to_sys_error(void); |
| 324 | extern afs_int32 et_to_sys_error(afs_int32 in); |
| 325 | extern void afs_FinalizeReq(struct vrequest *areq); |
| 326 | extern int afs_CheckCode(afs_int32 acode, struct vrequest *areq, int where); |
| 327 | extern void afs_CopyError(struct vrequest *afrom, |
| 328 | struct vrequest *ato); |
| 329 | extern void init_sys_error_to_et(void); |
| 330 | |
| 331 | /* afs_exporter.c */ |
| 332 | extern struct afs_exporter *root_exported; |
| 333 | extern struct afs_exporter *exporter_find(int type); |
| 334 | extern void shutdown_exporter(void); |
| 335 | |
| 336 | /* afs_fetchstore.c */ |
| 337 | extern int afs_UFSCacheFetchProc(struct rx_call *, struct osi_file *, |
| 338 | afs_size_t, struct dcache *, |
| 339 | struct vcache *, afs_size_t *, |
| 340 | afs_size_t *, afs_int32); |
| 341 | |
| 342 | extern int afs_UFSCacheStoreProc(struct rx_call *, struct osi_file *, |
| 343 | afs_int32, struct vcache *, |
| 344 | int *, afs_size_t *, |
| 345 | afs_size_t *); |
| 346 | |
| 347 | /* afs_icl.c */ |
| 348 | extern struct afs_icl_set *afs_icl_allSets; |
| 349 | extern int afs_icl_InitLogs(void); |
| 350 | extern void shutdown_icl(void); |
| 351 | extern int afs_icl_CreateLog(char *name, afs_int32 logSize, |
| 352 | struct afs_icl_log **outLogpp); |
| 353 | extern int afs_icl_CreateLogWithFlags(char *name, afs_int32 logSize, |
| 354 | afs_uint32 flags, |
| 355 | struct afs_icl_log **outLogpp); |
| 356 | extern int afs_icl_CopyOut(struct afs_icl_log *logp, |
| 357 | afs_int32 * bufferp, afs_int32 * bufSizep, |
| 358 | afs_uint32 * cookiep, afs_int32 * flagsp); |
| 359 | extern int afs_icl_GetLogParms(struct afs_icl_log *logp, afs_int32 * maxSizep, |
| 360 | afs_int32 * curSizep); |
| 361 | extern int afs_icl_LogHold(struct afs_icl_log *logp); |
| 362 | extern int afs_icl_LogHoldNL(struct afs_icl_log *logp); |
| 363 | extern int afs_icl_LogUse(struct afs_icl_log *logp); |
| 364 | extern int afs_icl_LogFreeUse(struct afs_icl_log *logp); |
| 365 | extern int afs_icl_LogSetSize(struct afs_icl_log *logp, |
| 366 | afs_int32 logSize); |
| 367 | extern int afs_icl_ZapLog(struct afs_icl_log *logp); |
| 368 | extern int afs_icl_LogRele(struct afs_icl_log *logp); |
| 369 | extern int afs_icl_LogReleNL(struct afs_icl_log *logp); |
| 370 | extern int afs_icl_ZeroLog(struct afs_icl_log *logp); |
| 371 | extern int afs_icl_LogFree(struct afs_icl_log *logp); |
| 372 | extern struct afs_icl_log *afs_icl_FindLog(char *name); |
| 373 | extern int |
| 374 | afs_icl_EnumerateLogs(int (*aproc) |
| 375 | |
| 376 | (char *name, char *arock, struct afs_icl_log * tp), |
| 377 | char *arock); |
| 378 | extern int afs_icl_CreateSet(char *name, struct afs_icl_log *baseLogp, |
| 379 | struct afs_icl_log *fatalLogp, |
| 380 | struct afs_icl_set **outSetpp); |
| 381 | extern int afs_icl_CreateSetWithFlags(char *name, |
| 382 | struct afs_icl_log *baseLogp, |
| 383 | struct afs_icl_log *fatalLogp, |
| 384 | afs_uint32 flags, |
| 385 | struct afs_icl_set **outSetpp); |
| 386 | extern int afs_icl_SetEnable(struct afs_icl_set *setp, afs_int32 eventID, |
| 387 | int setValue); |
| 388 | extern int afs_icl_GetEnable(struct afs_icl_set *setp, afs_int32 eventID, |
| 389 | int *getValuep); |
| 390 | extern int afs_icl_ZeroSet(struct afs_icl_set *setp); |
| 391 | extern int |
| 392 | afs_icl_EnumerateSets(int (*aproc) |
| 393 | |
| 394 | (char *name, char *arock, struct afs_icl_log * tp), |
| 395 | char *arock); |
| 396 | extern int afs_icl_AddLogToSet(struct afs_icl_set *setp, |
| 397 | struct afs_icl_log *newlogp); |
| 398 | extern int afs_icl_SetSetStat(struct afs_icl_set *setp, int op); |
| 399 | extern int afs_icl_SetHold(struct afs_icl_set *setp); |
| 400 | extern int afs_icl_ZapSet(struct afs_icl_set *setp); |
| 401 | extern int afs_icl_SetRele(struct afs_icl_set *setp); |
| 402 | extern int afs_icl_SetFree(struct afs_icl_set *setp); |
| 403 | extern struct afs_icl_set *afs_icl_FindSet(char *name); |
| 404 | |
| 405 | extern int afs_icl_Event4(struct afs_icl_set *setp, |
| 406 | afs_int32 eventID, afs_int32 lAndT, long p1, |
| 407 | long p2, long p3, long p4); |
| 408 | extern int afs_icl_Event3(struct afs_icl_set *setp, |
| 409 | afs_int32 eventID, afs_int32 lAndT, long p1, |
| 410 | long p2, long p3); |
| 411 | extern int afs_icl_Event2(struct afs_icl_set *setp, |
| 412 | afs_int32 eventID, afs_int32 lAndT, long p1, |
| 413 | long p2); |
| 414 | extern int afs_icl_Event1(struct afs_icl_set *setp, |
| 415 | afs_int32 eventID, afs_int32 lAndT, long p1); |
| 416 | extern int afs_icl_Event0(struct afs_icl_set *setp, |
| 417 | afs_int32 eventID, afs_int32 lAndT); |
| 418 | extern void afs_icl_AppendRecord(struct afs_icl_log *logp, |
| 419 | afs_int32 op, afs_int32 types, long p1, |
| 420 | long p2, long p3, long p4); |
| 421 | #if defined(AFS_NBSD_ENV) |
| 422 | extern int Afscall_icl(long opcode, long p1, long p2, long p3, long p4, |
| 423 | register_t *retval); |
| 424 | #else |
| 425 | extern int Afscall_icl(long opcode, long p1, long p2, long p3, long p4, |
| 426 | long *retval); |
| 427 | #endif |
| 428 | #ifdef AFS_DARWIN100_ENV |
| 429 | extern int Afscall64_icl(int opcode, user_addr_t p1, user_addr_t p2, |
| 430 | user_addr_t p3, user_addr_t p4, int *retval); |
| 431 | #endif |
| 432 | |
| 433 | /* afs_init.c */ |
| 434 | extern struct cm_initparams cm_initParams; |
| 435 | extern int afs_resourceinit_flag; |
| 436 | extern afs_rwlock_t afs_puttofileLock; |
| 437 | extern char *afs_sysname; |
| 438 | extern char *afs_sysnamelist[MAXNUMSYSNAMES]; |
| 439 | extern int afs_sysnamecount; |
| 440 | extern int afs_sysnamegen; |
| 441 | extern afs_int32 cacheInfoModTime; |
| 442 | extern int afs_CacheInit(afs_int32 astatSize, afs_int32 afiles, |
| 443 | afs_int32 ablocks, afs_int32 aDentries, |
| 444 | afs_int32 aVolumes, afs_int32 achunk, |
| 445 | afs_int32 aflags, afs_int32 ninodes, |
| 446 | afs_int32 nusers, afs_int32 dynamic_vcaches); |
| 447 | extern void afs_ComputeCacheParms(void); |
| 448 | extern void afs_InitFHeader(struct afs_fheader *aheader); |
| 449 | extern int afs_InitCacheInfo(char *afile); |
| 450 | extern int afs_InitVolumeInfo(char *afile); |
| 451 | extern int afs_InitCellInfo(char *afile); |
| 452 | extern int afs_ResourceInit(int preallocs); |
| 453 | extern void shutdown_cache(void); |
| 454 | extern void shutdown_vnodeops(void); |
| 455 | extern void shutdown_AFS(void); |
| 456 | extern int afs_LookupInodeByPath(char *filename, afs_ufs_dcache_id_t *inode, |
| 457 | struct vnode **fvpp); |
| 458 | |
| 459 | /* afs_lock.c */ |
| 460 | extern void Lock_Init(struct afs_lock *lock); |
| 461 | extern void ObtainLock(struct afs_lock *lock, int how, |
| 462 | unsigned int src_indicator); |
| 463 | extern void ReleaseLock(struct afs_lock *lock, int how); |
| 464 | extern int Afs_Lock_Trace(int op, struct afs_lock *alock, int type, |
| 465 | char *file, int line); |
| 466 | extern void Afs_Lock_Obtain(struct afs_lock *lock, int how); |
| 467 | extern void Afs_Lock_ReleaseR(struct afs_lock *lock); |
| 468 | extern void Afs_Lock_ReleaseW(struct afs_lock *lock); |
| 469 | extern void afs_osi_SleepR(char *addr, |
| 470 | struct afs_lock *alock); |
| 471 | extern void afs_osi_SleepW(char *addr, |
| 472 | struct afs_lock *alock); |
| 473 | extern void afs_osi_SleepS(char *addr, |
| 474 | struct afs_lock *alock); |
| 475 | |
| 476 | |
| 477 | |
| 478 | |
| 479 | /* afs_mariner.c */ |
| 480 | extern afs_int32 afs_mariner; |
| 481 | extern afs_int32 afs_marinerHost; |
| 482 | extern struct rx_service *afs_server; |
| 483 | extern int afs_AddMarinerName(char *aname, |
| 484 | struct vcache *avc); |
| 485 | extern char *afs_GetMariner(struct vcache *avc); |
| 486 | extern void afs_MarinerLogFetch(struct vcache *avc, |
| 487 | afs_int32 off, |
| 488 | afs_int32 bytes, |
| 489 | afs_int32 idx); |
| 490 | extern void afs_MarinerLog(char *astring, |
| 491 | struct vcache *avc); |
| 492 | extern void shutdown_mariner(void); |
| 493 | |
| 494 | /* afs_fetchstore.c */ |
| 495 | extern int afs_CacheStoreVCache(struct dcache **dcList, struct vcache *avc, |
| 496 | struct vrequest *areq, |
| 497 | int sync, unsigned int minj, |
| 498 | unsigned int high, unsigned int moredata, |
| 499 | afs_hyper_t *anewDV, |
| 500 | afs_size_t *amaxStoredLength); |
| 501 | extern int afs_CacheFetchProc(struct afs_conn *tc, struct rx_connection *rxconn, |
| 502 | struct osi_file *fP, |
| 503 | afs_size_t abase, struct dcache *adc, |
| 504 | struct vcache *avc, afs_int32 size, |
| 505 | struct afs_FetchOutput *tsmall) |
| 506 | AFS_NONNULL((5)); |
| 507 | |
| 508 | /* afs_memcache.c */ |
| 509 | extern int afs_InitMemCache(int blkCount, int blkSize, int flags); |
| 510 | extern int afs_MemCacheClose(struct osi_file *file); |
| 511 | extern void *afs_MemCacheOpen(afs_dcache_id_t *ainode); |
| 512 | extern int afs_MemReadBlk(struct osi_file *fP, int offset, |
| 513 | void *dest, int size); |
| 514 | extern int afs_MemReadvBlk(struct memCacheEntry *mceP, int offset, |
| 515 | struct iovec *iov, int nio, int size); |
| 516 | extern int afs_MemReadUIO(afs_dcache_id_t *ainode, struct uio *uioP); |
| 517 | extern int afs_MemWriteBlk(struct osi_file *fP, int offset, |
| 518 | void *src, int size); |
| 519 | extern int afs_MemWritevBlk(struct memCacheEntry *mceP, int offset, |
| 520 | struct iovec *iov, int nio, int size); |
| 521 | extern int afs_MemWriteUIO(struct vcache *, afs_dcache_id_t *, struct uio *); |
| 522 | extern int afs_MemCacheTruncate(struct osi_file *fP, |
| 523 | int size); |
| 524 | extern void shutdown_memcache(void); |
| 525 | |
| 526 | |
| 527 | /* afs_nfsclnt.c */ |
| 528 | extern struct afs_exporter *afs_nfsexported; |
| 529 | extern struct afs_exporter *afs_nfsexporter; |
| 530 | extern void afs_nfsclient_init(void); |
| 531 | extern int afs_nfsclient_reqhandler(struct afs_exporter *exporter, |
| 532 | afs_ucred_t **cred, |
| 533 | afs_uint32 host, afs_int32 *pagparam, |
| 534 | struct afs_exporter **outexporter); |
| 535 | extern void shutdown_nfsclnt(void); |
| 536 | |
| 537 | /* afs_osi.c */ |
| 538 | extern afs_lock_t afs_ftf; |
| 539 | extern void afs_osi_Invisible(void); |
| 540 | extern void afs_osi_Visible(void); |
| 541 | extern void afs_osi_RxkRegister(void); |
| 542 | extern void afs_osi_MaskSignals(void); |
| 543 | extern void afs_osi_UnmaskRxkSignals(void); |
| 544 | extern void afs_osi_MaskUserLoop(void); |
| 545 | extern void osi_Init(void); |
| 546 | extern void afs_osi_MaskSignals(void); |
| 547 | extern void afs_osi_UnmaskRxkSignals(void); |
| 548 | extern void afs_osi_RxkRegister(void); |
| 549 | extern void afs_osi_Invisible(void); |
| 550 | extern void shutdown_osi(void); |
| 551 | extern void shutdown_osinet(void); |
| 552 | extern void shutdown_osisleep(void); |
| 553 | extern int afs_osi_suser(void *credp); |
| 554 | extern void afs_osi_TraverseProcTable(void); |
| 555 | #if defined(KERNEL) && !defined(UKERNEL) |
| 556 | extern const afs_ucred_t *afs_osi_proc2cred(afs_proc_t * pr); |
| 557 | #endif |
| 558 | |
| 559 | /* afs_osi_alloc.c */ |
| 560 | #ifndef AFS_PRIVATE_OSI_ALLOCSPACES |
| 561 | extern afs_lock_t osi_fsplock; |
| 562 | extern afs_lock_t osi_flplock; |
| 563 | #endif |
| 564 | |
| 565 | extern void *afs_osi_Alloc_debug(size_t x, char *func, int line); |
| 566 | #ifndef afs_osi_Free |
| 567 | extern void afs_osi_Free(void *x, size_t asize); |
| 568 | #endif |
| 569 | #if !defined(AFS_OBSD44_ENV) |
| 570 | extern void afs_osi_FreeStr(char *x); |
| 571 | #endif |
| 572 | extern void osi_FreeLargeSpace(void *adata); |
| 573 | extern void osi_FreeSmallSpace(void *adata); |
| 574 | extern void *osi_AllocLargeSpace(size_t size); |
| 575 | extern void *osi_AllocSmallSpace(size_t size); |
| 576 | extern void shutdown_osinet(void); |
| 577 | |
| 578 | /* afs_osi_pag.c */ |
| 579 | #if defined(AFS_SUN5_ENV) |
| 580 | extern int afs_setpag(afs_ucred_t **credpp); |
| 581 | #elif defined(AFS_FBSD_ENV) |
| 582 | extern int afs_setpag(struct thread *td, void *args); |
| 583 | #elif defined(AFS_NBSD_ENV) |
| 584 | extern int afs_setpag(afs_proc_t *p, const void *args, register_t *retval); |
| 585 | #elif defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) |
| 586 | extern int afs_setpag(afs_proc_t *p, void *args, int *retval); |
| 587 | #else |
| 588 | extern int afs_setpag(void); |
| 589 | #endif |
| 590 | |
| 591 | extern afs_uint32 genpag(void); |
| 592 | extern afs_uint32 getpag(void); |
| 593 | #if defined(AFS_FBSD_ENV) |
| 594 | extern int AddPag(struct thread *td, afs_int32 aval, afs_ucred_t **credpp); |
| 595 | #elif defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) |
| 596 | extern int AddPag(afs_proc_t *p, afs_int32 aval, afs_ucred_t **credpp); |
| 597 | #else |
| 598 | extern int AddPag(afs_int32 aval, afs_ucred_t **credpp); |
| 599 | #endif |
| 600 | extern int afs_InitReq(struct vrequest *av, afs_ucred_t *acred); |
| 601 | extern int afs_CreateReq(struct vrequest **avpp, afs_ucred_t *acred); |
| 602 | extern void afs_DestroyReq(struct vrequest *av); |
| 603 | extern afs_uint32 afs_get_pag_from_groups(gid_t g0a, gid_t g1a); |
| 604 | extern void afs_get_groups_from_pag(afs_uint32 pag, gid_t * g0p, gid_t * g1p); |
| 605 | extern afs_int32 PagInCred(afs_ucred_t *cred); |
| 606 | |
| 607 | /* afs_osi_uio.c */ |
| 608 | #if !defined(AFS_DARWIN80_ENV) |
| 609 | extern int afsio_copy(struct uio *ainuio, struct uio *aoutuio, |
| 610 | struct iovec *aoutvec); |
| 611 | extern int afsio_trim(struct uio *auio, afs_int32 asize); |
| 612 | extern void afsio_free(struct uio *auio); |
| 613 | #endif |
| 614 | |
| 615 | extern struct uio* afsio_partialcopy(struct uio *auio, size_t size); |
| 616 | extern int afsio_skip(struct uio *auio, afs_int32 asize); |
| 617 | |
| 618 | /* afs_osi_vm.c */ |
| 619 | extern int osi_Active(struct vcache *avc); |
| 620 | extern void osi_FlushPages(struct vcache *avc, |
| 621 | afs_ucred_t *credp); |
| 622 | extern void osi_FlushText_really(struct vcache *vp); |
| 623 | extern int osi_VMDirty_p(struct vcache *avc); |
| 624 | #ifndef UKERNEL |
| 625 | extern void osi_ReleaseVM(struct vcache *avc, afs_ucred_t *acred); |
| 626 | #endif |
| 627 | |
| 628 | |
| 629 | /* ARCH/osi_crypto.c */ |
| 630 | extern int osi_readRandom(void *, afs_size_t); |
| 631 | |
| 632 | /* LINUX/osi_misc.c */ |
| 633 | #ifdef AFS_LINUX20_ENV |
| 634 | #ifdef AFS_LINUX24_ENV |
| 635 | extern int osi_lookupname(char *aname, uio_seg_t seg, int followlink, |
| 636 | struct dentry **dpp); |
| 637 | extern int osi_InitCacheInfo(char *aname); |
| 638 | extern int osi_rdwr(struct osi_file *osifile, struct uio *uiop, int rw); |
| 639 | extern void setup_uio(struct uio *uiop, struct iovec *iovecp, const char *buf, |
| 640 | afs_offs_t pos, int count, uio_flag_t flag, |
| 641 | uio_seg_t seg); |
| 642 | extern int uiomove(char *dp, int length, uio_flag_t rw, struct uio *uiop); |
| 643 | extern void osi_linux_free_inode_pages(void); |
| 644 | #endif |
| 645 | extern void osi_linux_mask(void); |
| 646 | extern void osi_linux_unmaskrxk(void); |
| 647 | extern int setpag(cred_t ** cr, afs_uint32 pagvalue, afs_uint32 * newpag, |
| 648 | int change_parent); |
| 649 | #endif |
| 650 | |
| 651 | |
| 652 | /* ARCH/osi_sleep.c */ |
| 653 | extern void afs_osi_InitWaitHandle(struct afs_osi_WaitHandle *achandle); |
| 654 | extern void afs_osi_CancelWait(struct afs_osi_WaitHandle *achandle); |
| 655 | extern int afs_osi_Wait(afs_int32 ams, struct afs_osi_WaitHandle *ahandle, |
| 656 | int aintok); |
| 657 | extern int afs_osi_TimedSleep(void *event, afs_int32 ams, int aintok); |
| 658 | #ifndef afs_osi_Wakeup |
| 659 | extern int afs_osi_Wakeup(void *event); |
| 660 | #endif |
| 661 | #ifndef afs_osi_Sleep |
| 662 | extern void afs_osi_Sleep(void *event); |
| 663 | #endif |
| 664 | #ifndef afs_osi_SleepSig |
| 665 | extern int afs_osi_SleepSig(void *event); |
| 666 | #endif |
| 667 | |
| 668 | |
| 669 | /* ARCH/osi_inode.c */ |
| 670 | #ifdef AFS_SUN5_ENV |
| 671 | extern int afs_syscall_icreate(dev_t, long, long, long, long, long, |
| 672 | rval_t *, afs_ucred_t *); |
| 673 | extern int afs_syscall_iopen(dev_t, int, int, rval_t *, afs_ucred_t *); |
| 674 | extern int afs_syscall_iincdec(dev_t, int, int, int, rval_t *, |
| 675 | afs_ucred_t *); |
| 676 | #elif defined(AFS_SGI65_ENV) |
| 677 | extern int afs_syscall_icreate(afs_uint32, afs_uint32, afs_uint32, afs_uint32, afs_uint32, afs_uint32, rval_t *); |
| 678 | extern int afs_syscall_iopen(int, ino_t, int, rval_t *); |
| 679 | extern int afs_syscall_iincdec(int, int, int, int); |
| 680 | #elif defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) |
| 681 | #if defined(AFS_NBSD_ENV) |
| 682 | extern int afs_syscall_icreate(long, long, long, long, long, long, register_t *); |
| 683 | extern int afs_syscall_iopen(int dev, int inode, int usrmod, register_t *); |
| 684 | #else |
| 685 | extern int afs_syscall_icreate(long, long, long, long, long, long, long*); |
| 686 | extern int afs_syscall_iopen(int dev, int inode, int usrmod, long *retval); |
| 687 | #endif |
| 688 | extern int afs_syscall_iincdec(int dev, int inode, int inode_p1, int amount); |
| 689 | #else |
| 690 | extern int afs_syscall_icreate(long, long, long, long, long, long); |
| 691 | extern int afs_syscall_iopen(int, int, int); |
| 692 | extern int afs_syscall_iincdec(int, int, int, int); |
| 693 | #endif |
| 694 | |
| 695 | /* ARCH/osi_file.c */ |
| 696 | extern int afs_osicred_initialized; |
| 697 | extern void *osi_UFSOpen(afs_dcache_id_t *ainode); |
| 698 | #if defined(AFS_LINUX22_ENV) |
| 699 | extern void osi_get_fh(struct dentry *dp, afs_ufs_dcache_id_t *ainode); |
| 700 | #endif |
| 701 | extern int afs_osi_Stat(struct osi_file *afile, |
| 702 | struct osi_stat *astat); |
| 703 | extern int osi_UFSClose(struct osi_file *afile); |
| 704 | extern int osi_UFSTruncate(struct osi_file *afile, afs_int32 asize); |
| 705 | extern void osi_DisableAtimes(struct vnode *avp); |
| 706 | extern int afs_osi_Read(struct osi_file *afile, int offset, |
| 707 | void *aptr, afs_int32 asize); |
| 708 | extern int afs_osi_Write(struct osi_file *afile, afs_int32 offset, |
| 709 | void *aptr, afs_int32 asize); |
| 710 | extern int afs_osi_MapStrategy(int (*aproc) (struct buf * bp), |
| 711 | struct buf *bp); |
| 712 | extern void shutdown_osifile(void); |
| 713 | |
| 714 | |
| 715 | /* ARCH/osi_groups.c */ |
| 716 | #if defined(UKERNEL) |
| 717 | extern int usr_setpag(afs_ucred_t **cred, afs_uint32 pagvalue, |
| 718 | afs_uint32 * newpag, int change_parent); |
| 719 | #else |
| 720 | # if defined AFS_XBSD_ENV |
| 721 | # if !defined(AFS_DFBSD_ENV) |
| 722 | # if defined(AFS_FBSD_ENV) |
| 723 | extern int setpag(struct thread *td, struct ucred **cred, afs_uint32 pagvalue, |
| 724 | afs_uint32 * newpag, int change_parent); |
| 725 | |
| 726 | # elif defined(AFS_NBSD_ENV) |
| 727 | extern int setpag(afs_proc_t *proc, afs_ucred_t **cred, afs_uint32 pagvalue, |
| 728 | afs_uint32 * newpag, int change_parent); |
| 729 | # else |
| 730 | extern int setpag(afs_proc_t *proc, struct ucred **cred, afs_uint32 pagvalue, |
| 731 | afs_uint32 * newpag, int change_parent); |
| 732 | # endif /* AFS_FBSD_ENV */ |
| 733 | # endif /* ! AFS_DFBSD_ENV */ |
| 734 | # endif /* AFS_XBSD_ENV */ |
| 735 | #endif /* UKERNEL */ |
| 736 | |
| 737 | #if defined(AFS_LINUX26_ENV) || defined(AFS_PAG_ONEGROUP_ENV) |
| 738 | extern afs_int32 osi_get_group_pag(afs_ucred_t *cred); |
| 739 | #endif |
| 740 | |
| 741 | |
| 742 | |
| 743 | /* ARCH/osi_vm.c */ |
| 744 | extern int osi_VM_FlushVCache(struct vcache *avc); |
| 745 | extern void osi_VM_StoreAllSegments(struct vcache *avc); |
| 746 | extern void osi_VM_TryToSmush(struct vcache *avc, afs_ucred_t *acred, |
| 747 | int sync); |
| 748 | extern void osi_VM_FlushPages(struct vcache *avc, afs_ucred_t *credp); |
| 749 | #if !defined(AFS_NBSD_ENV) |
| 750 | extern void osi_VM_Truncate(struct vcache *avc, int alen, afs_ucred_t *acred); |
| 751 | #else |
| 752 | extern void osi_VM_Truncate(struct vcache *avc, voff_t alen, afs_ucred_t *acred); |
| 753 | #endif |
| 754 | extern void osi_VM_TryReclaim(struct vcache *avc, int *slept); |
| 755 | extern void osi_VM_NukePages(struct vnode *vp, off_t offset, off_t size); |
| 756 | extern int osi_VM_Setup(struct vcache *avc, int force); |
| 757 | |
| 758 | #ifdef AFS_SUN5_ENV |
| 759 | extern int osi_VM_GetDownD(struct vcache *avc, struct dcache *adc); |
| 760 | extern int osi_VM_MultiPageConflict(struct vcache *avc, struct dcache *adc); |
| 761 | extern void osi_VM_PreTruncate(struct vcache *avc, int alen, |
| 762 | afs_ucred_t *acred); |
| 763 | #endif |
| 764 | |
| 765 | |
| 766 | /* ARCH/osi_vnodeops.c */ |
| 767 | extern struct vnodeops Afs_vnodeops; |
| 768 | extern int afs_inactive(struct vcache *avc, afs_ucred_t *acred); |
| 769 | |
| 770 | /* afs_osifile.c */ |
| 771 | |
| 772 | /* afs_osi_pag.c */ |
| 773 | extern afs_uint32 pag_epoch; |
| 774 | extern afs_uint32 pagCounter; |
| 775 | |
| 776 | /* OS/osi_vfsops.c */ |
| 777 | #if defined(AFS_XBSD_ENV) || defined(AFS_DARWIN_ENV) |
| 778 | extern struct mount *afs_globalVFS; |
| 779 | #else |
| 780 | extern struct vfs *afs_globalVFS; |
| 781 | #endif |
| 782 | extern struct vcache *afs_globalVp; |
| 783 | #ifdef AFS_LINUX20_ENV |
| 784 | extern void vcache2inode(struct vcache *avc); |
| 785 | extern void vcache2fakeinode(struct vcache *rootvp, struct vcache *mpvp); |
| 786 | #endif |
| 787 | |
| 788 | #ifdef UKERNEL |
| 789 | extern int afs_mount(struct vfs *afsp, char *path, void *data); |
| 790 | extern int afs_root(OSI_VFS_DECL(afsp), struct vnode **avpp); |
| 791 | extern int afs_unmount(struct vfs *afsp); |
| 792 | #endif |
| 793 | |
| 794 | /* afs_pag_call.c */ |
| 795 | extern afs_int32 afs_nfs_server_addr; |
| 796 | extern void afspag_Init(afs_int32 nfs_server_addr); |
| 797 | extern void afspag_Shutdown(void); |
| 798 | |
| 799 | /* afs_pag_cred.c */ |
| 800 | extern afs_rwlock_t afs_xpagcell; |
| 801 | extern afs_rwlock_t afs_xpagsys; |
| 802 | extern int afspag_PUnlog(char *ain, afs_int32 ainSize, |
| 803 | afs_ucred_t **acred); |
| 804 | extern int afspag_PSetTokens(char *ain, afs_int32 ainSize, |
| 805 | afs_ucred_t **acred); |
| 806 | extern int afspag_PSetSysName(char *ain, afs_int32 ainSize, |
| 807 | afs_ucred_t **acred); |
| 808 | |
| 809 | /* afs_pioctl.c */ |
| 810 | extern struct VenusFid afs_rootFid; |
| 811 | extern afs_int32 afs_waitForever; |
| 812 | extern short afs_waitForeverCount; |
| 813 | extern afs_int32 afs_showflags; |
| 814 | extern int afs_defaultAsynchrony; |
| 815 | #if defined(AFS_DARWIN100_ENV) |
| 816 | extern int afs_syscall64_pioctl(user_addr_t path, unsigned int com, |
| 817 | user_addr_t cmarg, int follow, \ |
| 818 | afs_ucred_t *credp); |
| 819 | #endif |
| 820 | #ifdef AFS_SUN5_ENV |
| 821 | extern int afs_syscall_pioctl(char *path, unsigned int com, caddr_t cmarg, |
| 822 | int follow, rval_t *rvp, afs_ucred_t *credp); |
| 823 | #elif defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) |
| 824 | extern int afs_syscall_pioctl(char *path, unsigned int com, caddr_t cmarg, |
| 825 | int follow, afs_ucred_t *credp); |
| 826 | #else |
| 827 | extern int afs_syscall_pioctl(char *path, unsigned int com, caddr_t cmarg, |
| 828 | int follow); |
| 829 | #endif |
| 830 | extern int HandleIoctl(struct vcache *avc, afs_int32 acom, |
| 831 | struct afs_ioctl *adata); |
| 832 | |
| 833 | |
| 834 | /* afs_segments.c */ |
| 835 | extern int afs_StoreAllSegments(struct vcache *avc, |
| 836 | struct vrequest *areq, int sync); |
| 837 | extern int afs_InvalidateAllSegments(struct vcache *avc); |
| 838 | extern int afs_ExtendSegments(struct vcache *avc, |
| 839 | afs_size_t alen, struct vrequest *areq); |
| 840 | extern int afs_TruncateAllSegments(struct vcache *avc, |
| 841 | afs_size_t alen, struct vrequest *areq, |
| 842 | afs_ucred_t *acred); |
| 843 | |
| 844 | /* afs_server.c */ |
| 845 | extern afs_rwlock_t afs_xsrvAddr; |
| 846 | extern afs_rwlock_t afs_xserver; |
| 847 | extern afs_rwlock_t afs_icl_lock; |
| 848 | extern struct srvAddr *afs_srvAddrs[NSERVERS]; |
| 849 | extern struct server *afs_servers[NSERVERS]; |
| 850 | extern int afs_totalServers; |
| 851 | extern struct server *afs_FindServer(afs_int32 aserver, afs_uint16 aport, |
| 852 | afsUUID * uuidp, afs_int32 locktype); |
| 853 | extern struct server *afs_GetServer(afs_uint32 * aserver, afs_int32 nservers, |
| 854 | afs_int32 acell, u_short aport, |
| 855 | afs_int32 locktype, afsUUID * uuidp, |
| 856 | afs_int32 addr_uniquifier, |
| 857 | struct volume *tv); |
| 858 | extern void afs_GetCapabilities(struct server *ts); |
| 859 | extern void ForceAllNewConnections(void); |
| 860 | extern void afs_MarkServerUpOrDown(struct srvAddr *sa, int a_isDown); |
| 861 | extern afs_int32 afs_ServerDown(struct srvAddr *sa, int code, |
| 862 | struct rx_connection *rxconn); |
| 863 | extern void afs_CountServers(void); |
| 864 | extern void afs_CheckServers(int adown, struct cell *acellp); |
| 865 | extern void afs_LoopServers(int adown, struct cell *acellp, int vlalso, |
| 866 | void (*func1) (int nconns, struct rx_connection **rxconns, |
| 867 | struct afs_conn **conns), |
| 868 | void (*func2) (int nconns, struct rx_connection **rxconns, |
| 869 | struct afs_conn **conns)); |
| 870 | extern unsigned int afs_random(void); |
| 871 | extern int afs_randomMod15(void); |
| 872 | extern int afs_randomMod127(void); |
| 873 | extern void afs_SortOneServer(struct server *asp); |
| 874 | extern void afs_SortServers(struct server *aservers[], int count); |
| 875 | extern void afs_ActivateServer(struct srvAddr *sap); |
| 876 | #ifdef AFS_USERSPACE_IP_ADDR |
| 877 | extern void afsi_SetServerIPRank(struct srvAddr *sa, afs_int32 addr, |
| 878 | afs_uint32 subnetmask); |
| 879 | #else |
| 880 | #if (!defined(AFS_SUN5_ENV)) && defined(USEIFADDR) |
| 881 | void afsi_SetServerIPRank(struct srvAddr *sa, struct in_ifaddr *ifa); |
| 882 | #endif |
| 883 | #endif |
| 884 | extern int afs_HaveCallBacksFrom(struct server *aserver); |
| 885 | extern void afs_RemoveAllConns(void); |
| 886 | extern void afs_MarkAllServersUp(void); |
| 887 | |
| 888 | /* afs_osidnlc.c */ |
| 889 | extern int osi_dnlc_enter(struct vcache *adp, char *aname, struct vcache *avc, |
| 890 | afs_hyper_t * avno); |
| 891 | extern struct vcache *osi_dnlc_lookup(struct vcache *adp, char *aname, |
| 892 | int locktype); |
| 893 | extern int osi_dnlc_remove(struct vcache *adp, char *aname, |
| 894 | struct vcache *avc); |
| 895 | extern int osi_dnlc_purgedp(struct vcache *adp); |
| 896 | extern int osi_dnlc_purgevp(struct vcache *avc); |
| 897 | extern int osi_dnlc_purge(void); |
| 898 | extern int osi_dnlc_purgevol(struct VenusFid *fidp); |
| 899 | extern int osi_dnlc_init(void); |
| 900 | extern int osi_dnlc_shutdown(void); |
| 901 | |
| 902 | /* afs_pag_cred.c */ |
| 903 | extern void afspag_SetPrimaryCell(char *acell); |
| 904 | |
| 905 | /* afs_stat.c */ |
| 906 | extern struct afs_CMStats afs_cmstats; |
| 907 | extern struct afs_stats_CMPerf afs_stats_cmperf; |
| 908 | extern struct afs_stats_CMFullPerf afs_stats_cmfullperf; |
| 909 | extern afs_int32 afs_stats_XferSumBytes[AFS_STATS_NUM_FS_XFER_OPS]; |
| 910 | extern void afs_InitStats(void); |
| 911 | extern void afs_GetCMStat(char **ptr, unsigned *size); |
| 912 | #ifndef AFS_NOSTATS |
| 913 | extern void afs_AddToMean(struct afs_MeanStats *oldMean, afs_int32 newValue); |
| 914 | #endif |
| 915 | |
| 916 | /* afs_syscall.c */ |
| 917 | #ifdef AFS_DARWIN100_ENV |
| 918 | extern int copyin_afs_ioctl(user_addr_t cmarg, struct afs_ioctl *dst); |
| 919 | #else |
| 920 | extern int copyin_afs_ioctl(caddr_t cmarg, struct afs_ioctl *dst); |
| 921 | #endif |
| 922 | |
| 923 | #if defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) |
| 924 | #ifdef AFS_DARWIN100_ENV |
| 925 | extern int afs3_syscall(afs_proc_t *p, void *args, unsigned int *retval); |
| 926 | #elif (defined(AFS_FBSD90_ENV) || defined(AFS_FBSD82_ENV)) && (__FreeBSD_version < 900044) |
| 927 | /* afs3_syscall prototype is in sys/sysproto.h |
| 928 | Yes, they put it in, then took it out again (renamed with a sys_ prefix) */ |
| 929 | #elif defined(AFS_FBSD_ENV) |
| 930 | extern int afs3_syscall(struct thread *p, void *args); |
| 931 | #elif defined(AFS_NBSD50_ENV) |
| 932 | extern int afs3_syscall(afs_proc_t *p, const void *args, register_t *retval); |
| 933 | #elif defined(AFS_NBSD40_ENV) |
| 934 | extern int afs3_syscall(struct lwp *p, void *args); |
| 935 | #else |
| 936 | extern int afs3_syscall(afs_proc_t *p, void *args, long *retval); |
| 937 | #endif |
| 938 | #endif |
| 939 | |
| 940 | #ifdef UKERNEL |
| 941 | extern int Afs_syscall(void); |
| 942 | #endif |
| 943 | |
| 944 | /* afs_tokens.c */ |
| 945 | struct ktc_tokenUnion; |
| 946 | struct ktc_setTokenData; |
| 947 | |
| 948 | extern union tokenUnion *afs_FindToken(struct tokenJar *, rx_securityIndex); |
| 949 | extern void afs_FreeTokens(struct tokenJar **); |
| 950 | extern union tokenUnion *afs_AddToken(struct tokenJar **, rx_securityIndex); |
| 951 | extern void afs_DiscardExpiredTokens(struct tokenJar **, afs_int32); |
| 952 | extern int afs_HasValidTokens(struct tokenJar *, afs_int32); |
| 953 | extern int afs_HasUsableTokens(struct tokenJar *, afs_int32); |
| 954 | extern void afs_AddRxkadToken(struct tokenJar **, char *, int, |
| 955 | struct ClearToken *); |
| 956 | extern int afs_AddTokenFromPioctl(struct tokenJar **, struct ktc_tokenUnion *); |
| 957 | extern int afs_ExtractTokensForPioctl(struct tokenJar *, time_t, |
| 958 | struct ktc_setTokenData *); |
| 959 | |
| 960 | /* UKERNEL/afs_usrops.c */ |
| 961 | #ifdef UKERNEL |
| 962 | extern void uafs_Shutdown(void); |
| 963 | extern void osi_ReleaseVM(struct vcache *avc, int len, |
| 964 | afs_ucred_t *credp); |
| 965 | extern int osi_GetTime(struct timeval *tv); |
| 966 | extern int iodone(struct usr_buf *bp); |
| 967 | extern int usr_ioctl(void); |
| 968 | extern int lookupname(char *fnamep, int segflg, int followlink, |
| 969 | struct usr_vnode **compvpp); |
| 970 | extern int usr_uiomove(char *kbuf, int n, int rw, struct usr_uio *uio); |
| 971 | extern int afs_osi_VOP_RDWR(struct usr_vnode *vnodeP, struct usr_uio *uioP, |
| 972 | int rw, int flags, afs_ucred_t *credP); |
| 973 | |
| 974 | #endif |
| 975 | |
| 976 | /* afs_user.c */ |
| 977 | extern afs_rwlock_t afs_xuser; |
| 978 | extern struct unixuser *afs_users[NUSERS]; |
| 979 | extern struct unixuser *afs_FindUser(afs_int32 auid, afs_int32 acell, |
| 980 | afs_int32 locktype); |
| 981 | extern struct unixuser *afs_GetUser(afs_int32 auid, afs_int32 acell, |
| 982 | afs_int32 locktype); |
| 983 | extern void afs_LockUser(struct unixuser *au, afs_int32 locktype, |
| 984 | unsigned int src_indicator); |
| 985 | extern void afs_NotifyUser(struct unixuser *auser, int event); |
| 986 | |
| 987 | #if AFS_GCPAGS |
| 988 | extern afs_int32 afs_GCPAGs(afs_int32 * ReleasedCount); |
| 989 | extern void afs_GCPAGs_perproc_func(afs_proc_t * pproc); |
| 990 | #endif /* AFS_GCPAGS */ |
| 991 | extern void afs_ComputePAGStats(void); |
| 992 | extern void afs_PutUser(struct unixuser *au, afs_int32 locktype); |
| 993 | extern void afs_GCUserData(void); |
| 994 | extern void afs_CheckTokenCache(void); |
| 995 | extern void afs_ResetAccessCache(afs_int32 uid, afs_int32 cell, int alock); |
| 996 | extern void afs_ResetUserConns(struct unixuser *auser); |
| 997 | extern void afs_SetPrimary(struct unixuser *au, int aflag); |
| 998 | extern void afs_MarkUserExpired(afs_int32 pag); |
| 999 | |
| 1000 | /* afs_util.c */ |
| 1001 | extern afs_int32 afs_strtoi_r(const char *str, char **endptr, afs_uint32 *ret); |
| 1002 | extern afs_int32 afs_calc_inum(afs_int32 cell, afs_int32 volume, |
| 1003 | afs_int32 vnode); |
| 1004 | #ifndef afs_cv2string |
| 1005 | extern char *afs_cv2string(char *ttp, afs_uint32 aval); |
| 1006 | #endif |
| 1007 | #ifndef afs_strcasecmp |
| 1008 | extern int afs_strcasecmp(const char *s1, const char *s2); |
| 1009 | #endif |
| 1010 | #ifndef afs_strcat |
| 1011 | extern char *afs_strcat(char *s1, char *s2); |
| 1012 | #endif |
| 1013 | #ifdef AFS_OBSD34_ENV |
| 1014 | extern char *afs_strcpy(char *s1, char *s2); |
| 1015 | #endif |
| 1016 | #ifndef afs_strchr |
| 1017 | extern char *afs_strchr(char *s, int c); |
| 1018 | #endif |
| 1019 | #ifndef afs_strrchr |
| 1020 | extern char *afs_strrchr(char *s, int c); |
| 1021 | #endif |
| 1022 | extern char *afs_strdup(char *s); |
| 1023 | extern void print_internet_address(char *preamble, struct srvAddr *sa, |
| 1024 | char *postamble, int flag, int code, |
| 1025 | struct rx_connection *rxconn); |
| 1026 | extern afs_int32 afs_data_pointer_to_int32(const void *p); |
| 1027 | |
| 1028 | extern void afs_CheckLocks(void); |
| 1029 | extern int afs_badop(void); |
| 1030 | extern int afs_noop(void); |
| 1031 | extern afs_int32 afs_data_pointer_to_int32(const void *p); |
| 1032 | |
| 1033 | /* afs_warn.c */ |
| 1034 | |
| 1035 | #ifdef AFS_AIX_ENV |
| 1036 | /* AIX doesn't have usable va_args support in its kernel */ |
| 1037 | extern void afs_warn(); |
| 1038 | extern void afs_warnuser(); |
| 1039 | extern void afs_warnall(); |
| 1040 | #else |
| 1041 | extern void afs_warn(char *fmt, ...) |
| 1042 | AFS_ATTRIBUTE_FORMAT(__printf__, 1, 2); |
| 1043 | extern void afs_warnuser(char *fmt, ...) |
| 1044 | AFS_ATTRIBUTE_FORMAT(__printf__, 1, 2); |
| 1045 | extern void afs_warnall(char *fmt, ...) |
| 1046 | AFS_ATTRIBUTE_FORMAT(__printf__, 1, 2); |
| 1047 | #endif |
| 1048 | extern void afs_WarnENOSPC(void); |
| 1049 | |
| 1050 | /* afs_vcache.c */ |
| 1051 | extern int VCHash(struct VenusFid *fid); |
| 1052 | extern int VCHashV(struct VenusFid *fid); |
| 1053 | extern int afs_ShakeLooseVCaches(afs_int32 anumber); |
| 1054 | extern afs_int32 afs_maxvcount; |
| 1055 | extern afs_int32 afs_vcount; |
| 1056 | extern int afsvnumbers; |
| 1057 | extern afs_rwlock_t afs_xvreclaim; |
| 1058 | extern afs_rwlock_t afs_xvcache; |
| 1059 | extern afs_rwlock_t afs_xvcdirty; |
| 1060 | extern afs_lock_t afs_xvcb; |
| 1061 | extern struct afs_q VLRU; |
| 1062 | extern afs_int32 vcachegen; |
| 1063 | extern unsigned int afs_paniconwarn; |
| 1064 | extern struct afs_q afs_vhashTV[VCSIZE]; |
| 1065 | extern afs_int32 afs_bulkStatsLost; |
| 1066 | extern int afs_norefpanic; |
| 1067 | extern struct vcache *ReclaimedVCList; |
| 1068 | extern ino_t vcacheMetaInode; |
| 1069 | extern struct osi_file *afs_vcacheMetaInodep; |
| 1070 | |
| 1071 | extern void afs_FlushReclaimedVcaches(void); |
| 1072 | void afs_vcacheInit(int astatSize); |
| 1073 | extern struct vcache *afs_FindVCache(struct VenusFid *afid, afs_int32 * retry, |
| 1074 | afs_int32 flag); |
| 1075 | extern void afs_BadFetchStatus(struct afs_conn *tc); |
| 1076 | extern int afs_CheckFetchStatus(struct afs_conn *tc, |
| 1077 | struct AFSFetchStatus *status); |
| 1078 | extern afs_int32 afs_FetchStatus(struct vcache *avc, struct VenusFid *afid, |
| 1079 | struct vrequest *areq, |
| 1080 | struct AFSFetchStatus *Outsp); |
| 1081 | |
| 1082 | extern afs_int32 afs_FlushVCBs(afs_int32 lockit); |
| 1083 | extern void afs_InactiveVCache(struct vcache *avc, afs_ucred_t *acred); |
| 1084 | extern struct vcache *afs_LookupVCache(struct VenusFid *afid, |
| 1085 | struct vrequest *areq, |
| 1086 | afs_int32 * cached, struct vcache *adp, |
| 1087 | char *aname); |
| 1088 | extern void afs_FlushAllVCaches(void); |
| 1089 | extern int afs_FlushVCache(struct vcache *avc, int *slept); |
| 1090 | extern struct vcache *afs_GetRootVCache(struct VenusFid *afid, |
| 1091 | struct vrequest *areq, |
| 1092 | afs_int32 * cached, |
| 1093 | struct volume *tvolp); |
| 1094 | extern struct vcache *afs_NewVCache(struct VenusFid *afid, |
| 1095 | struct server *serverp); |
| 1096 | extern struct vcache *afs_NewBulkVCache(struct VenusFid *afid, |
| 1097 | struct server *serverp, int seq); |
| 1098 | extern int afs_VerifyVCache2(struct vcache *avc, struct vrequest *areq); |
| 1099 | extern struct vcache *afs_GetVCache(struct VenusFid *afid, |
| 1100 | struct vrequest *areq, afs_int32 * cached, |
| 1101 | struct vcache *avc); |
| 1102 | extern void afs_PutVCache(struct vcache *avc); |
| 1103 | extern int afs_RefVCache(struct vcache *avc); |
| 1104 | |
| 1105 | /* Flags for afs_StaleVCacheFlags */ |
| 1106 | |
| 1107 | /* afs_xcbhash is already locked by the caller */ |
| 1108 | #define AFS_STALEVC_CBLOCKED (0x01) |
| 1109 | |
| 1110 | /* Normally we assume we only need to invalidate cached |
| 1111 | * name -> vcache mappings for entries where the given |
| 1112 | * vcache is the parent dir. This flag says to also clear |
| 1113 | * entries for the vcache itself. */ |
| 1114 | #define AFS_STALEVC_FILENAME (0x02) |
| 1115 | |
| 1116 | /* Do not touch the DNLC; the caller will deal with it. */ |
| 1117 | #define AFS_STALEVC_NODNLC (0x04) |
| 1118 | |
| 1119 | /* Do not run afs_DequeueCallback; the caller will take |
| 1120 | * care of callback management. */ |
| 1121 | #define AFS_STALEVC_NOCB (0x08) |
| 1122 | |
| 1123 | /* NULL-out the callback field of the vcache, to save code at the callsite. */ |
| 1124 | #define AFS_STALEVC_CLEARCB (0x10) |
| 1125 | |
| 1126 | /* Skip the DNLC purge if CVInit or CVFlushed is set, for efficiency. |
| 1127 | * A transitional flag used to reduce the logic change during refactoring |
| 1128 | * that is expected to be removed and the purge behavior standardized. */ |
| 1129 | #define AFS_STALEVC_SKIP_DNLC_FOR_INIT_FLUSHED (0x20) |
| 1130 | typedef unsigned int afs_stalevc_flags_t; |
| 1131 | |
| 1132 | #define afs_StaleVCache(avc) afs_StaleVCacheFlags(avc, 0, 0) |
| 1133 | extern void afs_StaleVCacheFlags(struct vcache *avc, afs_stalevc_flags_t flags, |
| 1134 | afs_uint32 cflags); |
| 1135 | |
| 1136 | extern void afs_SetDataVersion(struct vcache *avc, afs_hyper_t *avers); |
| 1137 | |
| 1138 | extern void afs_ProcessFS(struct vcache *avc, |
| 1139 | struct AFSFetchStatus *astat, |
| 1140 | struct vrequest *areq); |
| 1141 | extern struct afs_cbr *afs_AllocCBR(void); |
| 1142 | extern int afs_FreeCBR(struct afs_cbr *asp); |
| 1143 | extern void afs_RemoveVCB(struct VenusFid *afid); |
| 1144 | extern void afs_FlushActiveVcaches(afs_int32 doflocks); |
| 1145 | extern int afs_WriteVCache(struct vcache *avc, |
| 1146 | struct AFSStoreStatus *astatus, |
| 1147 | struct vrequest *areq); |
| 1148 | extern int afs_RemoteLookup(struct VenusFid *afid, |
| 1149 | struct vrequest *areq, char *name, |
| 1150 | struct VenusFid *nfid, |
| 1151 | struct AFSFetchStatus *OutStatusp, |
| 1152 | struct AFSCallBack *CallBackp, |
| 1153 | struct server **serverp, |
| 1154 | struct AFSVolSync *tsyncp); |
| 1155 | extern void afs_ResetVCache(struct vcache *, afs_ucred_t *, afs_int32 skipdnlc); |
| 1156 | extern afs_int32 afs_NFSFindVCache(struct vcache **avcp, |
| 1157 | struct VenusFid *afid); |
| 1158 | extern void afs_vcacheInit(int astatSize); |
| 1159 | extern void shutdown_vcache(void); |
| 1160 | extern void afs_DisconGiveUpCallbacks(void); |
| 1161 | extern void afs_ClearAllStatdFlag(void); |
| 1162 | |
| 1163 | /* VNOPS/afs_vnop_access.c */ |
| 1164 | extern afs_int32 afs_GetAccessBits(struct vcache *avc, |
| 1165 | afs_int32 arights, |
| 1166 | struct vrequest *areq); |
| 1167 | extern int afs_AccessOK(struct vcache *avc, afs_int32 arights, |
| 1168 | struct vrequest *areq, afs_int32 check_mode_bits); |
| 1169 | #if defined(AFS_SUN5_ENV) || (defined(AFS_SGI_ENV) && !defined(AFS_SGI65_ENV)) |
| 1170 | extern int afs_access(OSI_VC_DECL(avc), afs_int32 amode, int flags, |
| 1171 | afs_ucred_t *acred); |
| 1172 | #else |
| 1173 | extern int afs_access(OSI_VC_DECL(avc), afs_int32 amode, |
| 1174 | afs_ucred_t *acred); |
| 1175 | #endif |
| 1176 | extern int afs_getRights(OSI_VC_DECL(avc), afs_int32 arights, |
| 1177 | afs_ucred_t *acred); |
| 1178 | |
| 1179 | /* VNOPS/afs_vnop_attrs.c */ |
| 1180 | extern int afs_CopyOutAttrs(struct vcache *avc, |
| 1181 | struct vattr *attrs); |
| 1182 | #if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV) |
| 1183 | extern int afs_getattr(OSI_VC_DECL(avc), struct vattr *attrs, int flags, |
| 1184 | afs_ucred_t *acred); |
| 1185 | #else |
| 1186 | extern int afs_getattr(OSI_VC_DECL(avc), struct vattr *attrs, |
| 1187 | afs_ucred_t *acred); |
| 1188 | #endif |
| 1189 | extern int afs_VAttrToAS(struct vcache *avc, |
| 1190 | struct vattr *av, |
| 1191 | struct AFSStoreStatus *as); |
| 1192 | #if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV) |
| 1193 | extern int afs_setattr(OSI_VC_DECL(avc), struct vattr *attrs, |
| 1194 | int flags, afs_ucred_t *acred); |
| 1195 | #else |
| 1196 | extern int afs_setattr(OSI_VC_DECL(avc), struct vattr *attrs, |
| 1197 | afs_ucred_t *acred); |
| 1198 | #endif |
| 1199 | extern int afs_CreateAttr(struct vattr **out); |
| 1200 | extern void afs_DestroyAttr(struct vattr *vattr); |
| 1201 | |
| 1202 | /* VNOPS/afs_vnop_create.c */ |
| 1203 | #ifdef AFS_SGI64_ENV |
| 1204 | extern int afs_create(OSI_VC_DECL(adp), char *aname, struct vattr *attrs, |
| 1205 | int flags, int amode, struct vcache **avcp, |
| 1206 | afs_ucred_t *acred); |
| 1207 | #else /* AFS_SGI64_ENV */ |
| 1208 | extern int afs_create(OSI_VC_DECL(adp), char *aname, struct vattr *attrs, |
| 1209 | enum vcexcl aexcl, int amode, struct vcache **avcp, |
| 1210 | afs_ucred_t *acred); |
| 1211 | #endif /* AFS_SGI64_ENV */ |
| 1212 | extern int afs_LocalHero(struct vcache *avc, |
| 1213 | struct dcache *adc, |
| 1214 | AFSFetchStatus * astat, int aincr); |
| 1215 | |
| 1216 | /* VNOPS/afs_vnop_dirops.c */ |
| 1217 | |
| 1218 | extern int afs_mkdir(OSI_VC_DECL(adp), char *aname, struct vattr *attrs, |
| 1219 | struct vcache **avcp, afs_ucred_t *acred); |
| 1220 | #if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV) |
| 1221 | extern int afs_rmdir(OSI_VC_DECL(adp), char *aname, struct vnode *cdirp, |
| 1222 | afs_ucred_t *acred); |
| 1223 | #else |
| 1224 | extern int afs_rmdir(OSI_VC_DECL(adp), char *aname, afs_ucred_t *acred); |
| 1225 | #endif |
| 1226 | |
| 1227 | struct fid; |
| 1228 | /* VNOPS/afs_vnop_fid.c */ |
| 1229 | #ifdef AFS_AIX41_ENV |
| 1230 | int afs_fid(OSI_VC_DECL(avc), struct fid *fidpp, struct ucred *credp); |
| 1231 | #elif defined(AFS_SUN5_ENV) |
| 1232 | int afs_fid(OSI_VC_DECL(avc), struct fid *fidpp); |
| 1233 | #else |
| 1234 | int afs_fid(OSI_VC_DECL(avc), struct fid **fidpp); |
| 1235 | #endif /* AFS_AIX41_ENV */ |
| 1236 | |
| 1237 | /* VNOPS/afs_vnop_flock.c */ |
| 1238 | extern void lockIdSet(struct AFS_FLOCK *flock, struct SimpleLocks *slp, |
| 1239 | int clid); |
| 1240 | extern int HandleFlock(struct vcache *avc, int acom, |
| 1241 | struct vrequest *areq, pid_t clid, int onlymine); |
| 1242 | |
| 1243 | #if defined(AFS_SGI_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) |
| 1244 | extern int afs_lockctl(struct vcache * avc, struct AFS_FLOCK * af, int acmd, |
| 1245 | afs_ucred_t * acred, pid_t clid); |
| 1246 | #else |
| 1247 | extern int afs_lockctl(struct vcache * avc, struct AFS_FLOCK * af, int acmd, |
| 1248 | afs_ucred_t * acred); |
| 1249 | #endif |
| 1250 | |
| 1251 | /* VNOPS/afs_vnop_link.c */ |
| 1252 | #if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV) |
| 1253 | extern int afs_link(OSI_VC_DECL(adp), struct vcache *avc, char *aname, |
| 1254 | afs_ucred_t *acred); |
| 1255 | #else |
| 1256 | extern int afs_link(struct vcache *avc, OSI_VC_DECL(adp), char *aname, |
| 1257 | afs_ucred_t *acred); |
| 1258 | #endif |
| 1259 | |
| 1260 | /* VNOPS/afs_vnop_lookup.c */ |
| 1261 | extern int EvalMountPoint(struct vcache *avc, struct vcache *advc, |
| 1262 | struct volume **avolpp, |
| 1263 | struct vrequest *areq); |
| 1264 | extern void afs_InitFakeStat(struct afs_fakestat_state *state); |
| 1265 | extern int afs_EvalFakeStat(struct vcache **avcp, |
| 1266 | struct afs_fakestat_state *state, |
| 1267 | struct vrequest *areq); |
| 1268 | extern int afs_TryEvalFakeStat(struct vcache **avcp, |
| 1269 | struct afs_fakestat_state *state, |
| 1270 | struct vrequest *areq); |
| 1271 | extern void afs_PutFakeStat(struct afs_fakestat_state *state); |
| 1272 | extern int afs_ENameOK(char *aname); |
| 1273 | extern void Check_AtSys(struct vcache *avc, const char *aname, |
| 1274 | struct sysname_info *state, struct vrequest *areq); |
| 1275 | extern int Next_AtSys(struct vcache *avc, struct vrequest *areq, |
| 1276 | struct sysname_info *state); |
| 1277 | extern int afs_DoBulkStat(struct vcache *adp, long dirCookie, |
| 1278 | struct vrequest *areqp); |
| 1279 | |
| 1280 | #if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV) |
| 1281 | extern int afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, |
| 1282 | struct pathname *pnp, int flags, struct vnode *rdir, |
| 1283 | afs_ucred_t *acred); |
| 1284 | #elif defined(UKERNEL) |
| 1285 | extern int afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, |
| 1286 | afs_ucred_t *acred, int flags); |
| 1287 | #else |
| 1288 | extern int afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, |
| 1289 | afs_ucred_t *acred); |
| 1290 | #endif |
| 1291 | |
| 1292 | /* VNOPS/afs_vnop_open.c */ |
| 1293 | #ifdef AFS_SGI64_ENV |
| 1294 | extern int afs_open(bhv_desc_t * bhv, struct vcache **avcp, afs_int32 aflags, |
| 1295 | afs_ucred_t *acred); |
| 1296 | #else |
| 1297 | extern int afs_open(struct vcache **avcp, afs_int32 aflags, |
| 1298 | afs_ucred_t *acred); |
| 1299 | #endif |
| 1300 | |
| 1301 | |
| 1302 | /* VNOPS/afs_vnop_read.c */ |
| 1303 | extern int afs_read(struct vcache *avc, struct uio *auio, |
| 1304 | afs_ucred_t *acred, int noLock); |
| 1305 | |
| 1306 | extern int afs_UFSReadUIO(afs_dcache_id_t *cacheId, struct uio *tuiop); |
| 1307 | |
| 1308 | extern void afs_PrefetchChunk(struct vcache *avc, struct dcache *adc, |
| 1309 | afs_ucred_t *acred, struct vrequest *areq); |
| 1310 | |
| 1311 | |
| 1312 | /* VNOPS/afs_vnop_readdir.c */ |
| 1313 | extern int afs_rd_stash_i; |
| 1314 | #if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) |
| 1315 | extern int afs_readdir(OSI_VC_DECL(avc), struct uio *auio, |
| 1316 | afs_ucred_t *acred, int *eofp); |
| 1317 | #elif defined(AFS_HPUX100_ENV) |
| 1318 | extern int afs_readdir2(OSI_VC_DECL(avc), struct uio *auio, |
| 1319 | afs_ucred_t *acred); |
| 1320 | #else |
| 1321 | extern int afs_readdir(OSI_VC_DECL(avc), struct uio *auio, |
| 1322 | afs_ucred_t *acred); |
| 1323 | #endif |
| 1324 | |
| 1325 | /* VNOPS/afs_vnop_remove.c */ |
| 1326 | extern int afsremove(struct vcache *adp, struct dcache *tdc, |
| 1327 | struct vcache *tvc, char *aname, |
| 1328 | afs_ucred_t *acred, struct vrequest *treqp); |
| 1329 | extern int afs_remunlink(struct vcache *avc, int doit); |
| 1330 | extern int afs_remove(OSI_VC_DECL(adp), char *aname, afs_ucred_t *acred); |
| 1331 | extern char *afs_newname(void); |
| 1332 | |
| 1333 | /* VNOPS/afs_vnop_rename.c */ |
| 1334 | extern int afsrename(struct vcache *aodp, char *aname1, struct vcache *andp, |
| 1335 | char *aname2, afs_ucred_t *acred, |
| 1336 | struct vrequest *areq); |
| 1337 | #ifdef AFS_SGI_ENV |
| 1338 | extern int afs_rename(OSI_VC_DECL(aodp), char *aname1, struct vcache *andp, |
| 1339 | char *aname2, struct pathname *npnp, |
| 1340 | afs_ucred_t *acred); |
| 1341 | #else |
| 1342 | extern int afs_rename(OSI_VC_DECL(aodp), char *aname1, struct vcache *andp, |
| 1343 | char *aname2, afs_ucred_t *acred); |
| 1344 | #endif |
| 1345 | |
| 1346 | /* VNOPS/afs_vnop_strategy.c */ |
| 1347 | #if defined(AFS_SUN5_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) |
| 1348 | extern int afs_ustrategy(struct buf *adp, afs_ucred_t *credp); |
| 1349 | #else |
| 1350 | extern int afs_ustrategy(struct buf *adp); |
| 1351 | #endif |
| 1352 | |
| 1353 | /* VNOPS/afs_vnop_symlink.c */ |
| 1354 | extern int afs_MemHandleLink(struct vcache *avc, |
| 1355 | struct vrequest *areq); |
| 1356 | extern int afs_UFSHandleLink(struct vcache *avc, |
| 1357 | struct vrequest *areq); |
| 1358 | extern int afs_symlink(OSI_VC_DECL(adp), char *aname, |
| 1359 | struct vattr *attrs, char *atargetName, |
| 1360 | struct vcache **tvcp, afs_ucred_t *acred); |
| 1361 | extern int afs_readlink(OSI_VC_DECL(avc), struct uio *auio, |
| 1362 | afs_ucred_t *acred); |
| 1363 | |
| 1364 | /* VNOPS/afs_vnop_write.c */ |
| 1365 | extern int afs_write(struct vcache *avc, struct uio *auio, int aio, |
| 1366 | afs_ucred_t *acred, int noLock); |
| 1367 | |
| 1368 | extern int afs_UFSWriteUIO(struct vcache *, afs_dcache_id_t *, struct uio *); |
| 1369 | |
| 1370 | extern int afs_StoreOnLastReference(struct vcache *avc, |
| 1371 | struct vrequest *treq); |
| 1372 | extern int afs_DoPartialWrite(struct vcache *avc, |
| 1373 | struct vrequest *areq); |
| 1374 | extern int afs_closex(struct file *afd); |
| 1375 | |
| 1376 | #ifdef AFS_SGI65_ENV |
| 1377 | extern int afs_close(OSI_VC_DECL(avc), afs_int32 aflags, |
| 1378 | lastclose_t lastclose, afs_ucred_t *acred); |
| 1379 | #elif defined(AFS_SGI64_ENV) |
| 1380 | extern int afs_close(OSI_VC_DECL(avc), afs_int32 aflags, |
| 1381 | lastclose_t lastclose, off_t offset, |
| 1382 | afs_ucred_t *acred, struct flid *flp); |
| 1383 | #elif defined(AFS_SGI_ENV) |
| 1384 | extern int afs_close(OSI_VC_DECL(avc), afs_int32 aflags, |
| 1385 | lastclose_t lastclose, off_t offset, |
| 1386 | afs_ucred_t *acred); |
| 1387 | #elif defined(AFS_SUN5_ENV) |
| 1388 | extern int afs_close(OSI_VC_DECL(avc), afs_int32 aflags, int count, |
| 1389 | offset_t offset, afs_ucred_t *acred); |
| 1390 | #else |
| 1391 | extern int afs_close(OSI_VC_DECL(avc), afs_int32 aflags, |
| 1392 | afs_ucred_t *acred); |
| 1393 | #endif |
| 1394 | |
| 1395 | #if defined(AFS_SGI65_ENV) |
| 1396 | extern int afs_fsync(OSI_VC_DECL(avc), int flags, afs_ucred_t *acred, |
| 1397 | off_t start, off_t stop); |
| 1398 | #elif defined(AFS_SGI_ENV) || defined(AFS_SUN5_ENV) |
| 1399 | extern int afs_fsync(OSI_VC_DECL(avc), int flag, afs_ucred_t *acred); |
| 1400 | #else |
| 1401 | extern int afs_fsync(OSI_VC_DECL(avc), afs_ucred_t *acred); |
| 1402 | #endif |
| 1403 | |
| 1404 | |
| 1405 | /* afs_volume.c */ |
| 1406 | extern afs_int32 afs_FVIndex; |
| 1407 | extern afs_int32 afs_volCounter; |
| 1408 | extern afs_rwlock_t afs_xvolume; |
| 1409 | extern struct volume *afs_volumes[NVOLS]; |
| 1410 | extern afs_dcache_id_t volumeInode; |
| 1411 | extern struct volume *afs_FindVolume(struct VenusFid *afid, |
| 1412 | afs_int32 locktype); |
| 1413 | extern struct volume *afs_freeVolList; |
| 1414 | extern afs_int32 fvTable[NFENTRIES]; |
| 1415 | extern void LockAndInstallVolumeEntry(struct volume *av, struct vldbentry *ve, |
| 1416 | int acell); |
| 1417 | extern void LockAndInstallNVolumeEntry(struct volume *av, struct nvldbentry *ve, |
| 1418 | int acell); |
| 1419 | extern void LockAndInstallUVolumeEntry(struct volume *av, struct uvldbentry *ve, |
| 1420 | int acell, struct cell *tcell, |
| 1421 | struct vrequest *areq); |
| 1422 | extern void afs_ResetVolumeInfo(struct volume *tv); |
| 1423 | extern struct volume *afs_MemGetVolSlot(afs_int32 volid, struct cell *cell); |
| 1424 | extern void afs_ResetVolumes(struct server *srvp, struct volume *tv); |
| 1425 | extern struct volume *afs_GetVolume(struct VenusFid *afid, |
| 1426 | struct vrequest *areq, |
| 1427 | afs_int32 locktype); |
| 1428 | extern struct volume *afs_GetVolumeByName(char *aname, |
| 1429 | afs_int32 acell, int agood, |
| 1430 | struct vrequest *areq, |
| 1431 | afs_int32 locktype); |
| 1432 | extern struct volume *afs_UFSGetVolSlot(afs_int32 volid, struct cell *cell); |
| 1433 | extern void afs_CheckVolumeNames(int flags); |
| 1434 | |
| 1435 | /* Prototypes for generated files that aren't really in src/afs/ */ |
| 1436 | |
| 1437 | /* afs_uuid.c */ |
| 1438 | extern afs_int32 afs_uuid_equal(afsUUID * u1, afsUUID * u2); |
| 1439 | extern afs_int32 afs_uuid_is_nil(afsUUID * u1); |
| 1440 | extern void afs_htonuuid(afsUUID * uuidp); |
| 1441 | extern void afs_ntohuuid(afsUUID * uuidp); |
| 1442 | extern afs_int32 afs_uuid_create(afsUUID * uuid); |
| 1443 | extern u_short afs_uuid_hash(afsUUID * uuid); |
| 1444 | |
| 1445 | #if defined(AFS_SUN5_ENV) || defined(AFS_LINUX20_ENV) || defined(AFS_AIX_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) || defined(AFS_HPUX_ENV) || defined(AFS_SGI62_ENV) || defined(UKERNEL) |
| 1446 | #include "osi_prototypes.h" |
| 1447 | #endif |
| 1448 | |
| 1449 | #endif /* _AFS_PROTOTYPES_H_ */ |