diff options
| -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 | } |
