delete unnecessary test; check depth in case drop out of loop early
authorCarl Staelin <staelin@ucbvax.Berkeley.EDU>
Thu, 9 Apr 1992 05:43:46 +0000 (21:43 -0800)
committerCarl Staelin <staelin@ucbvax.Berkeley.EDU>
Thu, 9 Apr 1992 05:43:46 +0000 (21:43 -0800)
SCCS-vsn: sys/ufs/lfs/lfs_inode.c 7.59

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

index 6cf9c0b..a2f43ce 100644 (file)
@@ -4,7 +4,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)lfs_inode.c 7.58 (Berkeley) %G%
+ *     @(#)lfs_inode.c 7.59 (Berkeley) %G%
  */
 
 #include <sys/param.h>
  */
 
 #include <sys/param.h>
@@ -337,16 +337,17 @@ lfs_truncate(vp, length, flags)
                                        daddr = *daddrp++;
                                        SEGDEC;
                                }
                                        daddr = *daddrp++;
                                        SEGDEC;
                                }
-                               a_end[depth].in_off=NINDIR(fs)-1;
-                               if (ap->in_off > 0 && lbn == lastblock) {
+                               a_end[depth].in_off = NINDIR(fs) - 1;
+                               if (ap->in_off == 0)
+                                       brelse (bp);
+                               else {
                                        bzero(bp->b_un.b_daddr + ap->in_off,
                                            fs->lfs_bsize - 
                                            ap->in_off * sizeof(daddr_t));
                                        LFS_UBWRITE(bp);
                                        bzero(bp->b_un.b_daddr + ap->in_off,
                                            fs->lfs_bsize - 
                                            ap->in_off * sizeof(daddr_t));
                                        LFS_UBWRITE(bp);
-                               } else 
-                                       brelse (bp);
+                               }
                        }
                        }
-                       if (a[1].in_off == 0) {
+                       if (depth == 0 && a[1].in_off == 0) {
                                off = a[0].in_off;
                                daddr = ip->i_ib[off];
                                SEGDEC;
                                off = a[0].in_off;
                                daddr = ip->i_ib[off];
                                SEGDEC;