during truncate, at INDIR/DIRECT boundary, decrement lbn by 1
authorCarl Staelin <staelin@ucbvax.Berkeley.EDU>
Fri, 28 Feb 1992 09:08:38 +0000 (01:08 -0800)
committerCarl Staelin <staelin@ucbvax.Berkeley.EDU>
Fri, 28 Feb 1992 09:08:38 +0000 (01:08 -0800)
SCCS-vsn: sys/ufs/lfs/lfs_inode.c 7.57

usr/src/sys/ufs/lfs/lfs_inode.c

index e3e28c9..e33750b 100644 (file)
@@ -4,7 +4,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)lfs_inode.c 7.56 (Berkeley) %G%
+ *     @(#)lfs_inode.c 7.57 (Berkeley) %G%
  */
 
 #include <sys/param.h>
  */
 
 #include <sys/param.h>
@@ -171,7 +171,7 @@ lfs_update(vp, ta, tm, waitfor)
 #define UPDATE_SEGUSE \
        if (lastseg != -1) { \
                LFS_SEGENTRY(sup, fs, lastseg, sup_bp); \
 #define UPDATE_SEGUSE \
        if (lastseg != -1) { \
                LFS_SEGENTRY(sup, fs, lastseg, sup_bp); \
-               sup->su_nbytes -= fs->lfs_bsize * num; \
+               sup->su_nbytes -= num << fs->lfs_bshift; \
                LFS_UBWRITE(sup_bp); \
                blocksreleased += num; \
        }
                LFS_UBWRITE(sup_bp); \
                blocksreleased += num; \
        }
@@ -330,7 +330,7 @@ lfs_truncate(vp, length, flags)
                                SEGDEC;
                                ip->i_ib[off] = 0;
                        }
                                SEGDEC;
                                ip->i_ib[off] = 0;
                        }
-                       if (lbn == lastblock)
+                       if (lbn == lastblock || lbn <= NDADDR)
                                --lbn;
                        else {
                                lbn -= NINDIR(fs);
                                --lbn;
                        else {
                                lbn -= NINDIR(fs);