* avc->lock must be write-locked.
*/
int
-afs_StoreOnLastReference(register struct vcache *avc,
- register struct vrequest *treq)
+afs_StoreOnLastReference(struct vcache *avc,
+ struct vrequest *treq)
{
int code = 0;
}
int
-afs_MemWrite(register struct vcache *avc, struct uio *auio, int aio,
+afs_MemWrite(struct vcache *avc, struct uio *auio, int aio,
afs_ucred_t *acred, int noLock)
{
afs_size_t totalLength;
afs_int32 tlen, trimlen;
afs_int32 startDate;
afs_int32 max;
- register struct dcache *tdc;
+ struct dcache *tdc;
#ifdef _HIGHC_
volatile
#endif
struct uio *tuiop = &tuio;
struct iovec *tvec; /* again, should have define */
#endif
- register afs_int32 code;
+ afs_int32 code;
struct vrequest treq;
AFS_STATCNT(afs_MemWrite);
* high-level write op.
*/
if (avc->execsOrWriters <= 0) {
- printf("WARNING: afs_ufswr vp=%lx, exOrW=%d\n", (unsigned long)avc,
+ afs_warn("WARNING: afs_ufswr vp=%lx, exOrW=%d\n", (unsigned long)avc,
avc->execsOrWriters);
}
#else
osi_Assert(filePos <= avc->f.m.Length);
#else
if (filePos > avc->f.m.Length) {
-#if defined(AFS_DISCON_ENV)
if (AFS_IS_DISCON_RW)
afs_PopulateDCache(avc, filePos, &treq);
-#endif
afs_Trace4(afs_iclSetp, CM_TRACE_SETLENGTH, ICL_TYPE_STRING,
__FILE__, ICL_TYPE_LONG, __LINE__, ICL_TYPE_OFFSET,
ICL_HANDLE_OFFSET(avc->f.m.Length), ICL_TYPE_OFFSET,
/* called on writes */
int
-afs_UFSWrite(register struct vcache *avc, struct uio *auio, int aio,
+afs_UFSWrite(struct vcache *avc, struct uio *auio, int aio,
afs_ucred_t *acred, int noLock)
{
afs_size_t totalLength;
afs_int32 trimlen;
afs_int32 startDate;
afs_int32 max;
- register struct dcache *tdc;
+ struct dcache *tdc;
#ifdef _HIGHC_
volatile
#endif
struct iovec *tvec; /* again, should have define */
#endif
struct osi_file *tfile;
- register afs_int32 code;
+ afs_int32 code;
struct vrequest treq;
AFS_STATCNT(afs_UFSWrite);
* high-level write op.
*/
if (avc->execsOrWriters <= 0) {
- printf("WARNING: afs_ufswr vcp=%lx, exOrW=%d\n", (unsigned long)avc,
+ afs_warn("WARNING: afs_ufswr vcp=%lx, exOrW=%d\n", (unsigned long)avc,
avc->execsOrWriters);
}
#else
code = VOP_WRITE(tfile->vnode, &tuio, 0, afs_osi_credp);
VOP_UNLOCK(tfile->vnode, 0);
AFS_GLOCK();
-#elif defined(AFS_FBSD50_ENV)
+#elif defined(AFS_FBSD_ENV)
AFS_GUNLOCK();
VOP_LOCK(tfile->vnode, LK_EXCLUSIVE, curthread);
code = VOP_WRITE(tfile->vnode, &tuio, 0, afs_osi_credp);
VOP_UNLOCK(tfile->vnode, 0, curthread);
AFS_GLOCK();
+#elif defined(AFS_NBSD_ENV)
+ AFS_GUNLOCK();
+ VOP_LOCK(tfile->vnode, LK_EXCLUSIVE);
+ code = VOP_WRITE(tfile->vnode, &tuio, 0, afs_osi_credp);
+ VOP_UNLOCK(tfile->vnode, 0);
+ AFS_GLOCK();
#elif defined(AFS_XBSD_ENV)
AFS_GUNLOCK();
VOP_LOCK(tfile->vnode, LK_EXCLUSIVE, curproc);
osi_Assert(filePos <= avc->f.m.Length);
#else
if (filePos > avc->f.m.Length) {
-#if defined(AFS_DISCON_ENV)
if (AFS_IS_DISCON_RW)
afs_PopulateDCache(avc, filePos, &treq);
-#endif
afs_Trace4(afs_iclSetp, CM_TRACE_SETLENGTH, ICL_TYPE_STRING,
__FILE__, ICL_TYPE_LONG, __LINE__, ICL_TYPE_OFFSET,
ICL_HANDLE_OFFSET(avc->f.m.Length), ICL_TYPE_OFFSET,
/* do partial write if we're low on unmodified chunks */
int
-afs_DoPartialWrite(register struct vcache *avc, struct vrequest *areq)
+afs_DoPartialWrite(struct vcache *avc, struct vrequest *areq)
{
- register afs_int32 code;
+ afs_int32 code;
if (afs_stats_cmperf.cacheCurrDirtyChunks <=
afs_stats_cmperf.cacheMaxDirtyChunks
afs_close(OSI_VC_DECL(avc), afs_int32 aflags, afs_ucred_t *acred)
#endif
{
- register afs_int32 code;
- register struct brequest *tb;
+ afs_int32 code;
+ struct brequest *tb;
struct vrequest treq;
#ifdef AFS_SGI65_ENV
struct flid flid;
#ifdef AFS_AIX32_ENV
osi_ReleaseVM(avc, acred);
#endif
- printf("avc->vc_error=%d\n", avc->vc_error);
+ /* printf("avc->vc_error=%d\n", avc->vc_error); */
code = avc->vc_error;
avc->vc_error = 0;
}
code = avc->vc_error;
avc->vc_error = 0;
}
+#if defined(AFS_FBSD80_ENV)
+ /* XXX */
+ if (!avc->opens) {
+ afs_int32 opens, is_free, is_gone, is_doomed, iflag;
+ struct vnode *vp = AFSTOV(avc);
+ VI_LOCK(vp);
+ is_doomed = vp->v_iflag & VI_DOOMED;
+ is_free = vp->v_iflag & VI_FREE;
+ is_gone = vp->v_iflag & VI_DOINGINACT;
+ iflag = vp->v_iflag;
+ VI_UNLOCK(vp);
+ opens = avc->opens;
+ afs_warn("afs_close avc %p vp %p opens %d free %d doinginact %d doomed %d iflag %d\n",
+ avc, vp, opens, is_free, is_gone, is_doomed, iflag);
+ }
+#endif
avc->opens--;
ReleaseWriteLock(&avc->lock);
}
afs_fsync(OSI_VC_DECL(avc), afs_ucred_t *acred)
#endif
{
- register afs_int32 code;
+ afs_int32 code;
struct vrequest treq;
OSI_VC_CONVERT(avc);
ObtainSharedLock(&avc->lock, 18);
code = 0;
if (avc->execsOrWriters > 0) {
-
if (!AFS_IS_DISCONNECTED && !AFS_IS_DISCON_RW) {
- /* Your average flush. */
-
- /* put the file back */
- UpgradeSToWLock(&avc->lock, 41);
- code = afs_StoreAllSegments(avc, &treq, AFS_SYNC);
- ConvertWToSLock(&avc->lock);
-
-#if defined(AFS_DISCON_ENV)
+ /* Your average flush. */
+
+ /* put the file back */
+ UpgradeSToWLock(&avc->lock, 41);
+ code = afs_StoreAllSegments(avc, &treq, AFS_SYNC);
+ ConvertWToSLock(&avc->lock);
} else {
-
UpgradeSToWLock(&avc->lock, 711);
afs_DisconAddDirty(avc, VDisconWriteFlush, 1);
ConvertWToSLock(&avc->lock);
-#endif
} /* if not disconnected */
} /* if (avc->execsOrWriters > 0) */