* Macros to uniquely identify the AFS vfs struct
*/
#define AFS_VFSMAGIC 0x1234
-#if defined(AFS_SUN5_ENV) || defined(AFS_HPUX90_ENV) || defined(AFS_LINUX20_ENV)
-#define AFS_VFSFSID 99
-#else
-#if defined(AFS_SGI_ENV)
-#define AFS_VFSFSID afs_fstype
+
+#if defined(UKERNEL)
+# if defined(AFS_USR_AIX_ENV) || defined(AFS_USR_SGI_ENV)
+# define AFS_VFSFSID AFS_MOUNT_AFS
+# else
+# define AFS_VFSFSID 99
+# endif
+#elif defined(AFS_SUN5_ENV) || defined(AFS_HPUX90_ENV) || defined(AFS_LINUX20_ENV)
+# define AFS_VFSFSID 99
+#elif defined(AFS_SGI_ENV)
+# define AFS_VFSFSID afs_fstype
#else
-#define AFS_VFSFSID AFS_MOUNT_AFS
-#endif
+# define AFS_VFSFSID AFS_MOUNT_AFS
#endif
/* use this value for reporting total space, free space, etc.
* fake a high number to satisfy programs that use the statfs call to make sure
#define AFS_MAXCBRSCALL 32 /* max to return in a given call (must be <= AFSCBMAX) */
#define VCACHE_FREE 5
+#define VCACHE_DYNAMIC_STRESSED 10000
+#define VCACHE_STRESS_LOGINTERVAL (60*60*4) /* 4 hours */
#define AFS_NRXPACKETS 80
#define AFS_RXDEADTIME 50
#define AFS_HARDDEADTIME 120
#define BOP_MOVE 5 /* ptr1 afs_uspc_param ptr2 sname ptr3 dname */
#endif
#define BOP_PARTIAL_STORE 6 /* parm1 is chunk to store */
+#define BOP_INVALIDATE_SEGMENTS 7 /* no parms: just uses the 'bp->vc' vcache */
#define B_DONTWAIT 1 /* On failure return; don't wait */
struct AFSFid Fid;
};
-/* Temporary struct to be passed between afs_fid and afs_vget; in SunOS4.x we can only pass a maximum of 10 bytes for a handle (we ideally need 16!) */
+/* Temporary struct to be passed between afs_fid and afs_vget */
struct SmallFid {
afs_int32 Volume;
afs_int32 CellAndUnique;
#define CCore 0x00000010 /* storing a core file, needed since we don't get an open */
#define CDirty 0x00000020 /* file has been modified since first open (... O_RDWR) */
#define CSafeStore 0x00000040 /* close must wait for store to finish (should be in fd) */
-#define CMAPPED 0x00000080 /* Mapped files; primarily used by SunOS 4.0.x */
+#define CMAPPED 0x00000080 /* Mapped files */
#define CNSHARE 0x00000100 /* support O_NSHARE semantics */
#define CLied 0x00000200
#define CTruth 0x00000400
#define CPSIZE 2
#if defined(AFS_XBSD_ENV) || defined(AFS_DARWIN_ENV)
#define vrefCount v->v_usecount
+#elif defined(AFS_SUN511_ENV)
+# define vrefCount v->v_count
#else
#define vrefCount v.v_count
#endif /* AFS_XBSD_ENV */
};
#define VTOAFS(v) ((((struct nbvdata *)((v)->v_data)))->afsvc)
#define AFSTOV(vc) ((vc)->v)
-#elif defined(AFS_XBSD_ENV) || defined(AFS_DARWIN_ENV) || (defined(AFS_LINUX22_ENV) && !defined(STRUCT_SUPER_OPERATIONS_HAS_ALLOC_INODE))
+#elif defined(AFS_XBSD_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_SUN511_ENV) || (defined(AFS_LINUX22_ENV) && !defined(STRUCT_SUPER_OPERATIONS_HAS_ALLOC_INODE))
#define VTOAFS(v) ((struct vcache *)(v)->v_data)
#define AFSTOV(vc) ((vc)->v)
#else
* !(avc->nextfree) && !avc->vlruq.next => (FreeVCList == avc->nextfree)
*/
struct vcache {
-#if defined(AFS_XBSD_ENV) || defined(AFS_DARWIN_ENV) || (defined(AFS_LINUX22_ENV) && !defined(STRUCT_SUPER_OPERATIONS_HAS_ALLOC_INODE))
+#if defined(AFS_XBSD_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_SUN511_ENV) || (defined(AFS_LINUX22_ENV) && !defined(STRUCT_SUPER_OPERATIONS_HAS_ALLOC_INODE))
struct vnode *v;
#else
struct vnode v; /* Has reference count in v.v_count */
avc->f.states |= CCore; /* causes close to be called later */ \
\
/* The cred and vnode holds will be released in afs_FlushActiveVcaches */ \
- AFS_FAST_HOLD(avc); /* So it won't disappear */ \
+ osi_Assert(osi_vnhold(avc) == 0); /* So it won't disappear */ \
CRKEEP(avc, acred); /* Should use a better place for the creds */ \
} \
else { \
#define AFS_ZEROS 64 /* zero buffer */
-/*#define afs_DirtyPages(avc) (((avc)->f.states & CDirty) || osi_VMDirty_p((avc)))*/
#define afs_DirtyPages(avc) ((avc)->f.states & CDirty)
#define afs_InReadDir(avc) (((avc)->f.states & CReadDir) && (avc)->readdir_pid == MyPidxx2Pid(MyPidxx))
#define AFS_VOLCHECK_MTPTS 0x4 /* mount point invalidation also */
#define AFS_VOLCHECK_FORCE 0x8 /* do all forcibly */
-/* For volume ttl expiry checks. */
-#define AFS_MIN_VOLUME_TTL 600
-#define AFS_MAX_VOLUME_TTL MAX_AFS_INT32
-
#endif /* KERNEL */
#define AFS_FSPORT ((unsigned short) htons(7000))
/*
* Various definitions for osi_sleep and its event hash table
- * DFBSD and SUNOS have no osi_sleep, and HPUX has its own hack for this stuff
+ * DFBSD has no osi_sleep, and HPUX has its own hack for this stuff
*/
#define AFS_EVHASHSIZE 128 /* size of afs_evhasht, must be power of 2 */