svn commit: r231574 - stable/9/sbin/fsdb

Don Lewis truckman at FreeBSD.org
Mon Feb 13 07:30:43 UTC 2012


Author: truckman
Date: Mon Feb 13 07:30:42 2012
New Revision: 231574
URL: http://svn.freebsd.org/changeset/base/231574

Log:
  MFC r231102:
  
  Improve sparse file handling when printing the block list for an inode by
  not bailing out early when a hole is encountered in the direct block list.
  Print NULL block pointers in the direct block list.  Simplify the
  code that prints the fragment count.
  
  Match the style of the existing code.
  
  Reviewed by:	mckusick

Modified:
  stable/9/sbin/fsdb/fsdbutil.c
Directory Properties:
  stable/9/sbin/fsdb/   (props changed)

Modified: stable/9/sbin/fsdb/fsdbutil.c
==============================================================================
--- stable/9/sbin/fsdb/fsdbutil.c	Mon Feb 13 01:44:12 2012	(r231573)
+++ stable/9/sbin/fsdb/fsdbutil.c	Mon Feb 13 07:30:42 2012	(r231574)
@@ -295,22 +295,21 @@ printblocks(ino_t inum, union dinode *dp
     printf("Blocks for inode %d:\n", inum);
     printf("Direct blocks:\n");
     ndb = howmany(DIP(dp, di_size), sblock.fs_bsize);
-    for (i = 0; i < NDADDR; i++) {
-	if (DIP(dp, di_db[i]) == 0) {
-	    putchar('\n');
-	    return;
-	}
+    for (i = 0; i < NDADDR && i < ndb; i++) {
 	if (i > 0)
 	    printf(", ");
 	blkno = DIP(dp, di_db[i]);
 	printf("%jd", (intmax_t)blkno);
-	if (--ndb == 0 && (offset = blkoff(&sblock, DIP(dp, di_size))) != 0) {
+    }
+    if (ndb <= NDADDR) {
+	offset = blkoff(&sblock, DIP(dp, di_size));
+	if (offset != 0) {
 	    nfrags = numfrags(&sblock, fragroundup(&sblock, offset));
 	    printf(" (%d frag%s)", nfrags, nfrags > 1? "s": "");
 	}
     }
     putchar('\n');
-    if (ndb == 0)
+    if (ndb <= NDADDR)
 	return;
 
     bufp = malloc((unsigned int)sblock.fs_bsize);


More information about the svn-src-stable-9 mailing list