extern void shutdown_dcache(void);
extern void afs_CacheTruncateDaemon(void);
extern afs_int32 afs_fsfragsize;
-extern struct dcache *afs_MemGetDSlot(afs_int32 aslot, int needvalid);
+extern struct dcache *afs_MemGetDSlot(afs_int32 aslot, int indexvalid, int datavalid);
extern struct dcache *afs_GetDCache(struct vcache *avc,
afs_size_t abyte,
struct vrequest *areq,
extern void updateV2DC(int lockVc, struct vcache *v, struct dcache *d,
int src);
extern void afs_WriteThroughDSlots(void);
-extern struct dcache *afs_UFSGetDSlot(afs_int32 aslot, int needvalid);
+extern struct dcache *afs_UFSGetDSlot(afs_int32 aslot, int indexvalid, int datavalid);
extern int afs_WriteDCache(struct dcache *adc, int atime);
extern int afs_wakeup(struct vcache *avc);
extern int afs_InitCacheFile(char *afile, ino_t ainode);
/* afs_disconnected.c */
/* afs_dynroot.c */
+extern afs_rwlock_t afs_dynrootDirLock;
+extern afs_rwlock_t afs_dynSymlinkLock;
extern int afs_IsDynrootFid(struct VenusFid *fid);
extern int afs_IsDynrootMountFid(struct VenusFid *fid);
extern int afs_IsDynrootAnyFid(struct VenusFid *fid);
struct osi_file *fP,
afs_size_t abase, struct dcache *adc,
struct vcache *avc, afs_int32 size,
- struct afs_FetchOutput *tsmall);
+ struct afs_FetchOutput *tsmall)
+ AFS_NONNULL((5));
/* afs_memcache.c */
extern int afs_InitMemCache(int blkCount, int blkSize, int flags);
extern void afs_GetCapabilities(struct server *ts);
extern void ForceAllNewConnections(void);
extern void afs_MarkServerUpOrDown(struct srvAddr *sa, int a_isDown);
-extern afs_int32 afs_ServerDown(struct srvAddr *sa, int code);
+extern afs_int32 afs_ServerDown(struct srvAddr *sa, int code,
+ struct rx_connection *rxconn);
extern void afs_CountServers(void);
extern void afs_CheckServers(int adown, struct cell *acellp);
extern void afs_LoopServers(int adown, struct cell *acellp, int vlalso,
extern char *afs_cv2string(char *ttp, afs_uint32 aval);
#endif
#ifndef afs_strcasecmp
-extern int afs_strcasecmp(char *s1, char *s2);
+extern int afs_strcasecmp(const char *s1, const char *s2);
#endif
#ifndef afs_strcat
extern char *afs_strcat(char *s1, char *s2);
#endif
extern char *afs_strdup(char *s);
extern void print_internet_address(char *preamble, struct srvAddr *sa,
- char *postamble, int flag, int code);
+ char *postamble, int flag, int code,
+ struct rx_connection *rxconn);
extern afs_int32 afs_data_pointer_to_int32(const void *p);
extern void afs_CheckLocks(void);
/* AIX doesn't have usable va_args support in its kernel */
extern void afs_warn();
extern void afs_warnuser();
+extern void afs_warnall();
#else
extern void afs_warn(char *fmt, ...)
AFS_ATTRIBUTE_FORMAT(__printf__, 1, 2);
extern void afs_warnuser(char *fmt, ...)
AFS_ATTRIBUTE_FORMAT(__printf__, 1, 2);
+extern void afs_warnall(char *fmt, ...)
+ AFS_ATTRIBUTE_FORMAT(__printf__, 1, 2);
#endif
/* afs_vcache.c */
#endif /* AFS_AIX41_ENV */
/* VNOPS/afs_vnop_flock.c */
-extern afs_int32 lastWarnTime;
-
extern void lockIdSet(struct AFS_FLOCK *flock, struct SimpleLocks *slp,
int clid);
extern int HandleFlock(struct vcache *avc, int acom,
struct vrequest *areq);
extern int afs_symlink(OSI_VC_DECL(adp), char *aname,
struct vattr *attrs, char *atargetName,
- afs_ucred_t *acred);
+ struct vcache **tvcp, afs_ucred_t *acred);
extern int afs_readlink(OSI_VC_DECL(avc), struct uio *auio,
afs_ucred_t *acred);
int acell, struct cell *tcell,
struct vrequest *areq);
extern void afs_ResetVolumeInfo(struct volume *tv);
-extern struct volume *afs_MemGetVolSlot(void);
+extern struct volume *afs_MemGetVolSlot(afs_int32 volid, struct cell *cell);
extern void afs_ResetVolumes(struct server *srvp, struct volume *tv);
extern struct volume *afs_GetVolume(struct VenusFid *afid,
struct vrequest *areq,
afs_int32 acell, int agood,
struct vrequest *areq,
afs_int32 locktype);
-extern struct volume *afs_UFSGetVolSlot(void);
+extern struct volume *afs_UFSGetVolSlot(afs_int32 volid, struct cell *cell);
extern void afs_CheckVolumeNames(int flags);
/* Prototypes for generated files that aren't really in src/afs/ */