]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
more-64bit-client-fixes-20011110
authorHartmut Reuter <reuter@rzg.mpg.de>
Sat, 10 Nov 2001 23:00:55 +0000 (23:00 +0000)
committerDerrick Brashear <shadow@dementia.org>
Sat, 10 Nov 2001 23:00:55 +0000 (23:00 +0000)
some afs_offs_t still missing
so obsolete code fixed
and new trace for m.Length change

src/afs/SOLARIS/osi_vnodeops.c
src/afs/VNOPS/afs_vnop_write.c
src/afs/afs_daemons.c
src/afs/afs_segments.c
src/afs/afs_trace.et

index 4cd7bd4e546bce79ac2b24d340b5b747b2aa7f3a..bae355bcc92ee27f29f33ce5f8100467a7130dc0 100644 (file)
@@ -569,7 +569,8 @@ int afs_putpage(vp, off, len, flags, cred)
 #else
     afs_int32 tlen;
 #endif
-    afs_int32 endPos, NPages=0;
+    afs_offs_t endPos;
+    afs_int32 NPages=0;
 #if    defined(AFS_SUN56_ENV)
     u_offset_t toff = off;
 #else
@@ -594,8 +595,8 @@ int afs_putpage(vp, off, len, flags, cred)
 
     /* Get a list of modified (or whatever) pages */
     if (len) {
-       endPos = (int)off + len;                /* position we're supposed to write up to */
-       while ((afs_int32)toff < endPos && (afs_int32)toff < avc->m.Length) {
+       endPos = (afs_offs_t)off + len;         /* position we're supposed to write up to */
+       while ((afs_offs_t)toff < endPos && (afs_offs_t)toff < avc->m.Length) {
            /* If not invalidating pages use page_lookup_nowait to avoid reclaiming
             * them from the free list
             */
@@ -654,18 +655,16 @@ int afs_putapage(struct vnode *vp, struct page *pages,
     struct buf *tbuf;
     struct vcache *avc = (struct vcache *)vp;
     afs_int32 code = 0;
-    afs_offs_t  toff;
-    u_int tlen = PAGESIZE, off = (pages->p_offset/PAGESIZE)*PAGESIZE;
-    u_int poff = pages->p_offset;
+    u_int tlen = PAGESIZE;
+    afs_offs_t off = (pages->p_offset/PAGESIZE)*PAGESIZE;
 
     /*
      * Now we've got the modified pages.  All pages are locked and held 
      * XXX Find a kluster that fits in one block (or page). We also
      * adjust the i/o if the file space is less than a while page. XXX
      */
-    toff = off;
-    if (toff + tlen > avc->m.Length) {
-       tlen = avc->m.Length - toff;
+    if (off + tlen > avc->m.Length) {
+       tlen = avc->m.Length - off;
     }
     /* can't call mapout with 0 length buffers (rmfree panics) */
     if (((tlen>>24)&0xff) == 0xff) {
@@ -685,7 +684,7 @@ int afs_putapage(struct vnode *vp, struct page *pages,
        afs_Trace4(afs_iclSetp, CM_TRACE_PAGEOUTONE, ICL_TYPE_LONG, avc, 
                ICL_TYPE_LONG, pages,
                ICL_TYPE_LONG, tlen, 
-               ICL_TYPE_OFFSET, ICL_HANDLE_OFFSET(toff));
+               ICL_TYPE_OFFSET, ICL_HANDLE_OFFSET(off));
        code = afs_ustrategy(tbuf, credp);      /* unlocks page */
        AFS_GUNLOCK();
        bp_mapout(tbuf);
@@ -693,7 +692,7 @@ int afs_putapage(struct vnode *vp, struct page *pages,
     pvn_write_done(pages, ((code) ? B_ERROR:0) | B_WRITE | flags);
     if ((int)tlen > 0)
        pageio_done(tbuf);
-    if (offp) *offp = toff;
+    if (offp) *offp = off;
     if (lenp) *lenp = tlen;
     return code;
 }
@@ -959,8 +958,14 @@ struct AFS_UCRED *acred;
        size = auio->afsio_resid + auio->afsio_offset;  /* new file size */
        appendLength = size;            
        origLength = avc->m.Length;
-       if (size > avc->m.Length) 
+       if (size > avc->m.Length) {
+           afs_Trace4(afs_iclSetp, CM_TRACE_SETLENGTH,
+               ICL_TYPE_STRING, __FILE__,
+               ICL_TYPE_LONG, __LINE__,
+               ICL_TYPE_OFFSET, ICL_HANDLE_OFFSET(avc->m.Length),
+               ICL_TYPE_OFFSET, ICL_HANDLE_OFFSET(size));
            avc->m.Length = size;       /* file grew */
+       }
        avc->states |= CDirty;          /* Set the dirty bit */
        avc->m.Date = osi_Time();       /* Set file date (for ranlib) */
     } else {
index 62d7e5d5e43512111f4bfa28b27db4d4e14b8217..021e236b33f38cf33da2c5c5a24fcb916ae7e9d1 100644 (file)
@@ -269,8 +269,8 @@ afs_MemWrite(avc, auio, aio, acred, noLock)
        afsio_skip(auio, tlen);     /* advance auio over data written */
        /* compute new file size */
        if (offset + len > tdc->f.chunkBytes) {
-           afs_int32 toffset = offset+len;
-           afs_AdjustSize(tdc, toffset);
+           afs_int32 tlength = offset+len;
+           afs_AdjustSize(tdc, tlength);
        }
        totalLength -= len;
        transferLength += len;
@@ -279,8 +279,14 @@ afs_MemWrite(avc, auio, aio, acred, noLock)
         /* afs_xwrite handles setting m.Length */
         osi_Assert(filePos <= avc->m.Length);
 #else
-       if (filePos > avc->m.Length)
+       if (filePos > avc->m.Length) {
+           afs_Trace4(afs_iclSetp, CM_TRACE_SETLENGTH,
+               ICL_TYPE_STRING, __FILE__,
+               ICL_TYPE_LONG, __LINE__,
+               ICL_TYPE_OFFSET, ICL_HANDLE_OFFSET(avc->m.Length),
+               ICL_TYPE_OFFSET, ICL_HANDLE_OFFSET(filePos));
            avc->m.Length = filePos;
+       }
 #endif
 #ifndef AFS_VM_RDWR_ENV
        /*
@@ -567,8 +573,8 @@ afs_UFSWrite(avc, auio, aio, acred, noLock)
        afsio_skip(auio, tlen);     /* advance auio over data written */
        /* compute new file size */
        if (offset + len > tdc->f.chunkBytes) {
-           afs_int32 toffset = offset+len;
-           afs_AdjustSize(tdc, toffset);
+           afs_int32 tlength = offset+len;
+           afs_AdjustSize(tdc, tlength);
        }
        totalLength -= len;
        transferLength += len;
@@ -578,6 +584,11 @@ afs_UFSWrite(avc, auio, aio, acred, noLock)
         osi_Assert(filePos <= avc->m.Length);
 #else
        if (filePos > avc->m.Length) {
+           afs_Trace4(afs_iclSetp, CM_TRACE_SETLENGTH,
+               ICL_TYPE_STRING, __FILE__,
+               ICL_TYPE_LONG, __LINE__,
+               ICL_TYPE_OFFSET, ICL_HANDLE_OFFSET(avc->m.Length),
+               ICL_TYPE_OFFSET, ICL_HANDLE_OFFSET(filePos));
            avc->m.Length = filePos;
        }
 #endif
index 00e91c0cd8e19018bceb774f983c0b1541eea4aa..4618039dfe95d86ce16fd4ecc527063ab6e8370e 100644 (file)
@@ -739,7 +739,6 @@ afs_BioDaemon (nbiods)
     }
 
     /* Ignore HUP signals... */
-#ifdef AFS_AIX41_ENV
     {
        sigset_t sigbits, osigbits;
        /*
@@ -749,11 +748,6 @@ afs_BioDaemon (nbiods)
        SIGDELSET(sigbits, SIGHUP);             /*   except SIGHUP      */
        limit_sigs(&sigbits, &osigbits);        /*   and already masked */
     }
-#else
-    SIGDELSET(u.u_procp->p_sig, SIGHUP);
-    SIGADDSET(u.u_procp->p_sigignore, SIGHUP);
-    SIGDELSET(u.u_procp->p_sigcatch, SIGHUP);
-#endif
     /* Main body starts here -- this is an intentional infinite loop, and
      * should NEVER exit 
      *
@@ -784,15 +778,16 @@ afs_BioDaemon (nbiods)
        if (bp->b_flags & B_PFSTORE) {  /* XXXX */
            ObtainWriteLock(&vcp->lock,404);        
            if (vcp->v.v_gnode->gn_mwrcnt) {
-#ifdef AFS_64BIT_CLIENT
-               if (vcp->m.Length < 
-                               (afs_offs_t)dbtob(bp->b_blkno) + bp->b_bcount)
-                   vcp->m.Length = 
-                               (afs_offs_t)dbtob(bp->b_blkno) + bp->b_bcount;
-#else /* AFS_64BIT_CLIENT */
-               if (vcp->m.Length < bp->b_bcount + (u_int)dbtob(bp->b_blkno))
-                   vcp->m.Length = bp->b_bcount + (u_int)dbtob(bp->b_blkno);
-#endif /* AFS_64BIT_CLIENT */
+               afs_offs_t newlength = 
+                       (afs_offs_t) dbtob(bp->b_blkno) + bp->b_bcount;
+               if (vcp->m.Length < newlength) {
+                   afs_Trace4(afs_iclSetp, CM_TRACE_SETLENGTH,
+                       ICL_TYPE_STRING, __FILE__,
+                       ICL_TYPE_LONG, __LINE__,
+                       ICL_TYPE_OFFSET, ICL_HANDLE_OFFSET(vcp->m.Length),
+                       ICL_TYPE_OFFSET, ICL_HANDLE_OFFSET(newlength));
+                   vcp->m.Length = newlength;
+               }
            }
            ReleaseWriteLock(&vcp->lock);
        }
@@ -1101,21 +1096,9 @@ afs_BioDaemon (nbiods)
 
 
     /* Ignore HUP signals... */
-#ifdef AFS_AIX41_ENV
-    {
-       sigset_t sigbits, osigbits;
-       /*
-        * add SIGHUP to the set of already masked signals
-        */
-       SIGFILLSET(sigbits);                    /* allow all signals    */
-       SIGDELSET(sigbits, SIGHUP);             /*   except SIGHUP      */
-       limit_sigs(&sigbits, &osigbits);        /*   and already masked */
-    }
-#else
     SIGDELSET(u.u_procp->p_sig, SIGHUP);
     SIGADDSET(u.u_procp->p_sigignore, SIGHUP);
     SIGDELSET(u.u_procp->p_sigcatch, SIGHUP);
-#endif
     /* Main body starts here -- this is an intentional infinite loop, and
      * should NEVER exit 
      *
index 481050b1ab803e2ad485b206f06012164dd3d5aa..1178942dec65bc51730795d82e71878ad946a7da 100644 (file)
@@ -832,6 +832,9 @@ afs_TruncateAllSegments(avc, alen, areq, acred)
 
     AFS_STATCNT(afs_TruncateAllSegments);
     avc->m.Date = osi_Time();
+    afs_Trace3(afs_iclSetp, CM_TRACE_TRUNCALL, ICL_TYPE_POINTER, avc,
+                       ICL_TYPE_OFFSET, ICL_HANDLE_OFFSET(avc->m.Length), 
+                       ICL_TYPE_OFFSET, ICL_HANDLE_OFFSET(alen));
     if (alen >= avc->m.Length) {
        /*
         * Special speedup since Sun's vm extends the file this way;
@@ -844,16 +847,9 @@ afs_TruncateAllSegments(avc, alen, areq, acred)
         */
        avc->states |= CExtendedFile;
        avc->m.Length = alen;
-       afs_Trace3(afs_iclSetp, CM_TRACE_TRUNCALL1, ICL_TYPE_POINTER, avc,
-                       ICL_TYPE_OFFSET, ICL_HANDLE_OFFSET(avc->m.Length), 
-                       ICL_TYPE_OFFSET, ICL_HANDLE_OFFSET(alen));
        return 0;
     }
 
-    afs_Trace3(afs_iclSetp, CM_TRACE_TRUNCALL2, ICL_TYPE_POINTER, avc,
-                       ICL_TYPE_OFFSET, ICL_HANDLE_OFFSET(avc->m.Length), 
-                       ICL_TYPE_OFFSET, ICL_HANDLE_OFFSET(alen));
-
 #if    (defined(AFS_SUN5_ENV))
 
     /* Zero unused portion of last page */
index f800141b509168d5ac26f2e39e0aa4238ca9dbd2..f892079388b001df47150d9667f9814dbef5efc8 100644 (file)
@@ -25,9 +25,7 @@ error_table 2 ZCM
        ec      CM_TRACE_PROCESSFS, "ProcessFS vp 0x%lx old len (0x%x, 0x%x) new len (0x%x, 0x%x)"
        ec      CM_TRACE_STOREALL, "StoreAll vp 0x%lx len (0x%x, 0x%x)"
        ec      CM_TRACE_INVALL, "InvalAll vp 0x%lx len 0x%x"
-       ec      CM_TRACE_TRUNCALL1, "TruncAll vp 0x%lx old len 0x%x new len 0x%x"
-       ec      CM_TRACE_TRUNCALL2,"TruncAll vp 0x%lx vlen 0x%x len 0x%x"
-       
+       ec      CM_TRACE_TRUNCALL, "TruncAll vp 0x%lx old len (0x%x, 0x%x) new len (0x%x, 0x%x)"
        ec      CM_TRACE_GNLINK, "Gn_link vp 0x%lx name %s (returns 0x%x)"
        ec      CM_TRACE_GMKDIR, "Gn_mkdir vp 0x%lx name %s mode 0x%x (returns 0x%x)"
        ec      CM_TRACE_GMKNOD, "Gn_mknod vp 0x%lx name %s mode 0x%x (returns 0x%x)"
@@ -153,5 +151,6 @@ error_table 2 ZCM
        ec      CM_TRACE_PREFETCHCMD, "PrefetchCmd tvc 0x%x tfid (%d:%d.%d.%d) fid (%d:%d.%d.%d)"
        ec      CM_TRACE_STOREPROC2, "StoreProc got 0x%x"
        ec      CM_TRACE_ADJUSTSIZE, "AdjustSize index %d oldSize %d newSize %d blocksUsed %d"
+       ec      CM_TRACE_SETLENGTH, "%s line %d: m.Length was (0x%x, 0x%x), now (0x%x, 0x%x)"
 end