diff options
Diffstat (limited to 'fs/xfs')
-rw-r--r-- | fs/xfs/xfs_itable.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/fs/xfs/xfs_itable.c b/fs/xfs/xfs_itable.c index 1edd9afb664b..9972992fd3c3 100644 --- a/fs/xfs/xfs_itable.c +++ b/fs/xfs/xfs_itable.c | |||
@@ -619,21 +619,25 @@ xfs_bulkstat( | |||
619 | } | 619 | } |
620 | } | 620 | } |
621 | } | 621 | } |
622 | ino = XFS_AGINO_TO_INO(mp, agno, agino); | ||
623 | bno = XFS_AGB_TO_DADDR(mp, agno, agbno); | ||
622 | /* | 624 | /* |
623 | * Skip if this inode is free. | 625 | * Skip if this inode is free. |
624 | */ | 626 | */ |
625 | if (XFS_INOBT_MASK(chunkidx) & irbp->ir_free) | 627 | if (XFS_INOBT_MASK(chunkidx) & irbp->ir_free) { |
628 | lastino = ino; | ||
626 | continue; | 629 | continue; |
630 | } | ||
627 | /* | 631 | /* |
628 | * Count used inodes as free so we can tell | 632 | * Count used inodes as free so we can tell |
629 | * when the chunk is used up. | 633 | * when the chunk is used up. |
630 | */ | 634 | */ |
631 | irbp->ir_freecount++; | 635 | irbp->ir_freecount++; |
632 | ino = XFS_AGINO_TO_INO(mp, agno, agino); | ||
633 | bno = XFS_AGB_TO_DADDR(mp, agno, agbno); | ||
634 | if (!xfs_bulkstat_use_dinode(mp, flags, bp, | 636 | if (!xfs_bulkstat_use_dinode(mp, flags, bp, |
635 | clustidx, &dip)) | 637 | clustidx, &dip)) { |
638 | lastino = ino; | ||
636 | continue; | 639 | continue; |
640 | } | ||
637 | /* | 641 | /* |
638 | * If we need to do an iget, cannot hold bp. | 642 | * If we need to do an iget, cannot hold bp. |
639 | * Drop it, until starting the next cluster. | 643 | * Drop it, until starting the next cluster. |
@@ -694,8 +698,7 @@ xfs_bulkstat( | |||
694 | if (end_of_ag) { | 698 | if (end_of_ag) { |
695 | agno++; | 699 | agno++; |
696 | agino = 0; | 700 | agino = 0; |
697 | } else | 701 | } |
698 | agino = XFS_INO_TO_AGINO(mp, lastino); | ||
699 | } else | 702 | } else |
700 | break; | 703 | break; |
701 | } | 704 | } |