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 MFC after: 1 week
This commit is contained in:
parent
770ca66a70
commit
89ff4dbd9e
@ -293,22 +293,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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user