|
|
| version 1.154, 2007/09/12 04:04:58 | version 1.155, 2007/09/25 04:01:22 |
|---|---|
| Line 290 xfs_bulkstat_use_dinode( | Line 290 xfs_bulkstat_use_dinode( |
| return 1; | return 1; |
| dip = (xfs_dinode_t *) | dip = (xfs_dinode_t *) |
| xfs_buf_offset(bp, clustidx << mp->m_sb.sb_inodelog); | xfs_buf_offset(bp, clustidx << mp->m_sb.sb_inodelog); |
| /* | |
| * Check the buffer containing the on-disk inode for di_nlink == 0. | |
| * This is to prevent xfs_bulkstat from picking up just reclaimed | |
| * inodes that have their in-core state initialized but not flushed | |
| * to disk yet. This is a temporary hack that would require a proper | |
| * fix in the future. | |
| */ | |
| if (be16_to_cpu(dip->di_core.di_magic) != XFS_DINODE_MAGIC || | if (be16_to_cpu(dip->di_core.di_magic) != XFS_DINODE_MAGIC || |
| !XFS_DINODE_GOOD_VERSION(dip->di_core.di_version)) | !XFS_DINODE_GOOD_VERSION(dip->di_core.di_version) || |
| !dip->di_core.di_nlink) | |
| return 0; | return 0; |
| if (flags & BULKSTAT_FG_QUICK) { | if (flags & BULKSTAT_FG_QUICK) { |
| *dipp = dip; | *dipp = dip; |