From ff1d11169bc19aeb451a97e8ccdc14e1109031e7 Mon Sep 17 00:00:00 2001 From: Chaskiel M Grundman Date: Mon, 27 Feb 2006 20:36:24 +0000 Subject: [PATCH] tiger-updates-20060220 update lpioctl, setattr and free tuios --- src/afs/DARWIN/osi_file.c | 2 +- src/afs/VNOPS/afs_vnop_read.c | 12 ++++++++++++ src/afs/VNOPS/afs_vnop_write.c | 8 ++++++-- src/sys/afssyscalls.c | 12 ++++++++---- 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/afs/DARWIN/osi_file.c b/src/afs/DARWIN/osi_file.c index f607580d6..7d8fc6158 100644 --- a/src/afs/DARWIN/osi_file.c +++ b/src/afs/DARWIN/osi_file.c @@ -247,7 +247,7 @@ osi_UFSTruncate(register struct osi_file *afile, afs_int32 asize) #ifdef AFS_DARWIN80_ENV VATTR_INIT(&tvattr); VATTR_SET(&tvattr, va_size, asize); - code = vnode_getattr(afile->vnode, &tvattr, afs_osi_ctxtp); + code = vnode_setattr(afile->vnode, &tvattr, afs_osi_ctxtp); #else VATTR_NULL(&tvattr); tvattr.va_size = asize; diff --git a/src/afs/VNOPS/afs_vnop_read.c b/src/afs/VNOPS/afs_vnop_read.c index c3da3fa99..9a104e168 100644 --- a/src/afs/VNOPS/afs_vnop_read.c +++ b/src/afs/VNOPS/afs_vnop_read.c @@ -353,6 +353,12 @@ afs_MemRead(register struct vcache *avc, struct uio *auio, if (len <= 0) break; /* surprise eof */ +#ifdef AFS_DARWIN80_ENV + if (tuiop) { + uio_free(tuiop); + tuiop = 0; + } +#endif } /* the whole while loop */ /* @@ -880,6 +886,12 @@ afs_UFSRead(register struct vcache *avc, struct uio *auio, filePos += len; if (len <= 0) break; /* surprise eof */ +#ifdef AFS_DARWIN80_ENV + if (tuiop) { + uio_free(tuiop); + tuiop = 0; + } +#endif } /* if we make it here with tdc non-zero, then it is the last chunk we diff --git a/src/afs/VNOPS/afs_vnop_write.c b/src/afs/VNOPS/afs_vnop_write.c index ffcec3389..8392169bc 100644 --- a/src/afs/VNOPS/afs_vnop_write.c +++ b/src/afs/VNOPS/afs_vnop_write.c @@ -106,7 +106,7 @@ afs_MemWrite(register struct vcache *avc, struct uio *auio, int aio, #endif afs_int32 error; #ifdef AFS_DARWIN80_ENV - uio_t tuiop; + uio_t tuiop = NULL; #else struct uio tuio; struct uio *tuiop = &tuio; @@ -264,6 +264,8 @@ afs_MemWrite(register struct vcache *avc, struct uio *auio, int aio, } #ifdef AFS_DARWIN80_ENV + if (tuiop) + uio_free(tuiop); trimlen = len; tuiop = afsio_darwin_partialcopy(auio, trimlen); #else @@ -366,7 +368,7 @@ afs_UFSWrite(register struct vcache *avc, struct uio *auio, int aio, #endif afs_int32 error; #ifdef AFS_DARWIN80_ENV - uio_t tuiop; + uio_t tuiop = NULL; #else struct uio tuio; struct uio *tuiop = &tuio; @@ -527,6 +529,8 @@ afs_UFSWrite(register struct vcache *avc, struct uio *auio, int aio, } #ifdef AFS_DARWIN80_ENV + if (tuiop) + uio_free(tuiop); trimlen = len; tuiop = afsio_darwin_partialcopy(auio, trimlen); #else diff --git a/src/sys/afssyscalls.c b/src/sys/afssyscalls.c index cd44fbdc2..e2335d4ee 100644 --- a/src/sys/afssyscalls.c +++ b/src/sys/afssyscalls.c @@ -340,13 +340,17 @@ lpioctl(char *path, int cmd, char *cmarg, int follow) int errcode, rval; #if defined(AFS_LINUX20_ENV) - rval = proc_afs_syscall(AFSCALL_PIOCTL, (long)path, cmd, (long)cmarg, follow, &errcode); + rval = proc_afs_syscall(AFSCALL_PIOCTL, (long)path, cmd, (long)cmarg, + follow, &errcode); if(rval) - errcode = syscall(AFS_SYSCALL, AFSCALL_PIOCTL, path, cmd, cmarg, follow); + errcode = syscall(AFS_SYSCALL, AFSCALL_PIOCTL, path, cmd, cmarg, + follow); #elif defined(AFS_DARWIN80_ENV) - if (ioctl_afs_syscall(AFSCALL_PIOCTL,(long)path,cmd,(long)cmarg,follow,0,0,&errcode)) - errcode=ENOSYS; + rval = ioctl_afs_syscall(AFSCALL_PIOCTL, (long)path, cmd, (long)cmarg, + follow, 0, 0, &errcode); + if (rval) + errcode = rval; #else errcode = syscall(AFS_SYSCALL, AFSCALL_PIOCTL, path, cmd, cmarg, follow); #endif -- 2.39.5