#ifdef VNODE_TRACING
struct ktrace *v_trace; /* trace header structure */
#endif
+#ifdef CKPT
+ ckpt_handle_t v_ckpt; /* ckpt lookup info */
+#endif
} vnode1_t;
extern struct pfdat *vnode_get_dpages(vnode_t*);
register afs_int32 code = 0;
afs_int32 ret;
-#if defined(AFS_SGI64_ENV) && defined(CKPT)
+#if defined(AFS_SGI64_ENV) && defined(CKPT) && !defined(_R5000_CVT_WAR)
afs_fid2_t *afid2;
#endif
*avcp = NULL;
-#if defined(AFS_SGI64_ENV) && defined(CKPT)
+#if defined(AFS_SGI64_ENV) && defined(CKPT) && !defined(_R5000_CVT_WAR)
afid2 = (afs_fid2_t*)fidp;
if (afid2->af_len == sizeof(afs_fid2_t) - sizeof(afid2->af_len)) {
/* It's a checkpoint restart fid. */
return 0;
}
-#if defined(AFS_SGI64_ENV) && defined(CKPT)
+#if defined(AFS_SGI64_ENV) && defined(CKPT) && !defined(_R5000_CVT_WAR)
int afs_fid2(OSI_VC_DECL(avc), struct fid *fidp)
{
struct cell *tcell;
* return of ENOSYS would make the code fail over to VOP_FID. We can't let
* that happen, since we do a VN_HOLD there in the expectation that
* posthandle will be called to release the vnode.
+ *
+ * afs_fid2 is used to support the R5000 workarounds (_R5000_CVT_WAR)
*/
int afs_fid2(OSI_VC_DECL(avc), struct fid *fidp)
{
+#if defined(_R5000_CVT_WAR)
+ extern int R5000_cvt_war;
+
+ if (R5000_cvt_war)
+ return ENOSYS;
+ else
+ return EINVAL;
+#else
return EINVAL;
+#endif
}
#endif /* AFS_SGI64_ENV && CKPT */
IP19_KDEFS = -DIP19 -DEVEREST -DMP -DR4000 \
-mips3 -D_PAGESZ=16384 -D_MIPS3_ADDRSPACE -64
IP20_KDEFS = -DIP20 -DR4000 -DJUMP_WAR -DBADVA_WAR -DTRITON -DUSE_PCI_PIO \
- $(KDEFS_32)
+ -D_R5000_CVT_WAR=1 -DCKPT -D_MTEXT_VFS $(KDEFS_32)
IP21_KDEFS = -DIP21 -DEVEREST -DMP -DTFP -TARG:processor=r8000 $(KDEFS_64)
IP25_KDEFS = -DIP25 -DEVEREST -DMP -DR10000 -TARG:processor=r10000 $(KDEFS_64)
IP26_KDEFS = -DIP26 -DTFP -TARG:sync=off -TARG:processor=r8000 $(KDEFS_64)