macos104-not-yet-20050511
[openafs.git] / src / afs / afs_memcache.c
index a449317..279238b 100644 (file)
@@ -17,13 +17,13 @@ RCSID
 #ifndef AFS_LINUX22_ENV
 #include "rpc/types.h"
 #endif
-#ifdef AFS_ALPHA_ENV
+#ifdef AFS_OSF_ENV
 #undef kmem_alloc
 #undef kmem_free
 #undef mem_alloc
 #undef mem_free
 #undef register
-#endif /* AFS_ALPHA_ENV */
+#endif /* AFS_OSF_ENV */
 #include "afsincludes.h"       /* Afs-based standard headers */
 #include "afs/afs_stats.h"     /* statistics */
 
@@ -181,13 +181,13 @@ afs_MemReadUIO(ino_t blkno, struct uio *uioP)
 {
     register struct memCacheEntry *mceP =
        (struct memCacheEntry *)afs_MemCacheOpen(blkno);
-    int length = mceP->size - uioP->uio_offset;
+    int length = mceP->size - AFS_UIO_OFFSET(uioP);
     afs_int32 code;
 
     AFS_STATCNT(afs_MemReadUIO);
     MObtainReadLock(&mceP->afs_memLock);
-    length = (length < uioP->uio_resid) ? length : uioP->uio_resid;
-    AFS_UIOMOVE(mceP->data + uioP->uio_offset, length, UIO_READ, uioP, code);
+    length = (length < AFS_UIO_RESID(uioP)) ? length : AFS_UIO_RESID(uioP);
+    AFS_UIOMOVE(mceP->data + AFS_UIO_OFFSET(uioP), length, UIO_READ, uioP, code);
     MReleaseReadLock(&mceP->afs_memLock);
     return code;
 }
@@ -282,25 +282,25 @@ afs_MemWriteUIO(ino_t blkno, struct uio *uioP)
 
     AFS_STATCNT(afs_MemWriteUIO);
     MObtainWriteLock(&mceP->afs_memLock, 312);
-    if (uioP->uio_resid + uioP->uio_offset > mceP->dataSize) {
+    if (AFS_UIO_RESID(uioP) + AFS_UIO_OFFSET(uioP) > mceP->dataSize) {
        char *oldData = mceP->data;
 
-       mceP->data = afs_osi_Alloc(uioP->uio_resid + uioP->uio_offset);
+       mceP->data = afs_osi_Alloc(AFS_UIO_RESID(uioP) + AFS_UIO_OFFSET(uioP));
 
        AFS_GUNLOCK();
        memcpy(mceP->data, oldData, mceP->size);
        AFS_GLOCK();
 
        afs_osi_Free(oldData, mceP->dataSize);
-       mceP->dataSize = uioP->uio_resid + uioP->uio_offset;
+       mceP->dataSize = AFS_UIO_RESID(uioP) + AFS_UIO_OFFSET(uioP);
     }
-    if (mceP->size < uioP->uio_offset)
+    if (mceP->size < AFS_UIO_OFFSET(uioP))
        memset(mceP->data + mceP->size, 0,
-              (int)(uioP->uio_offset - mceP->size));
-    AFS_UIOMOVE(mceP->data + uioP->uio_offset, uioP->uio_resid, UIO_WRITE,
+              (int)(AFS_UIO_OFFSET(uioP) - mceP->size));
+    AFS_UIOMOVE(mceP->data + AFS_UIO_OFFSET(uioP), AFS_UIO_RESID(uioP), UIO_WRITE,
                uioP, code);
-    if (uioP->uio_offset > mceP->size)
-       mceP->size = uioP->uio_offset;
+    if (AFS_UIO_OFFSET(uioP) > mceP->size)
+       mceP->size = AFS_UIO_OFFSET(uioP);
 
     MReleaseWriteLock(&mceP->afs_memLock);
     return code;
@@ -383,8 +383,9 @@ afs_MemCacheStoreProc(register struct rx_call *acall,
        code = rx_WritevAlloc(acall, tiov, &tnio, RX_MAXIOVECS, tlen);
        RX_AFS_GLOCK();
        if (code <= 0) {
+           code = rx_Error(acall);
            osi_FreeSmallSpace(tiov);
-           return -33;
+           return code ? code : -33;
        }
        tlen = code;
        code = afs_MemReadvBlk(mceP, offset, tiov, tnio, tlen);
@@ -399,8 +400,9 @@ afs_MemCacheStoreProc(register struct rx_call *acall,
        (*abytesXferredP) += code;
 #endif /* AFS_NOSTATS */
        if (code != tlen) {
+           code = rx_Error(acall);
            osi_FreeSmallSpace(tiov);
-           return -33;
+           return code ? code : -33;
        }
        offset += tlen;
        alen -= tlen;