diff options
Diffstat (limited to 'fs/xfs/xfs_itable.c')
-rw-r--r-- | fs/xfs/xfs_itable.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/fs/xfs/xfs_itable.c b/fs/xfs/xfs_itable.c index 62efab2f3839..b1b801e4a28e 100644 --- a/fs/xfs/xfs_itable.c +++ b/fs/xfs/xfs_itable.c | |||
@@ -106,6 +106,7 @@ xfs_bulkstat_one_iget( | |||
106 | buf->bs_dmevmask = dic->di_dmevmask; | 106 | buf->bs_dmevmask = dic->di_dmevmask; |
107 | buf->bs_dmstate = dic->di_dmstate; | 107 | buf->bs_dmstate = dic->di_dmstate; |
108 | buf->bs_aextents = dic->di_anextents; | 108 | buf->bs_aextents = dic->di_anextents; |
109 | buf->bs_forkoff = XFS_IFORK_BOFF(ip); | ||
109 | 110 | ||
110 | switch (dic->di_format) { | 111 | switch (dic->di_format) { |
111 | case XFS_DINODE_FMT_DEV: | 112 | case XFS_DINODE_FMT_DEV: |
@@ -176,6 +177,7 @@ xfs_bulkstat_one_dinode( | |||
176 | buf->bs_dmevmask = be32_to_cpu(dic->di_dmevmask); | 177 | buf->bs_dmevmask = be32_to_cpu(dic->di_dmevmask); |
177 | buf->bs_dmstate = be16_to_cpu(dic->di_dmstate); | 178 | buf->bs_dmstate = be16_to_cpu(dic->di_dmstate); |
178 | buf->bs_aextents = be16_to_cpu(dic->di_anextents); | 179 | buf->bs_aextents = be16_to_cpu(dic->di_anextents); |
180 | buf->bs_forkoff = XFS_DFORK_BOFF(dic); | ||
179 | 181 | ||
180 | switch (dic->di_format) { | 182 | switch (dic->di_format) { |
181 | case XFS_DINODE_FMT_DEV: | 183 | case XFS_DINODE_FMT_DEV: |
@@ -408,8 +410,10 @@ xfs_bulkstat( | |||
408 | (XFS_INODE_CLUSTER_SIZE(mp) >> mp->m_sb.sb_inodelog); | 410 | (XFS_INODE_CLUSTER_SIZE(mp) >> mp->m_sb.sb_inodelog); |
409 | nimask = ~(nicluster - 1); | 411 | nimask = ~(nicluster - 1); |
410 | nbcluster = nicluster >> mp->m_sb.sb_inopblog; | 412 | nbcluster = nicluster >> mp->m_sb.sb_inopblog; |
411 | irbuf = kmem_zalloc_greedy(&irbsize, PAGE_SIZE, PAGE_SIZE * 4, | 413 | irbuf = kmem_zalloc_greedy(&irbsize, PAGE_SIZE, PAGE_SIZE * 4); |
412 | KM_SLEEP | KM_MAYFAIL | KM_LARGE); | 414 | if (!irbuf) |
415 | return ENOMEM; | ||
416 | |||
413 | nirbuf = irbsize / sizeof(*irbuf); | 417 | nirbuf = irbsize / sizeof(*irbuf); |
414 | 418 | ||
415 | /* | 419 | /* |
@@ -420,9 +424,7 @@ xfs_bulkstat( | |||
420 | while (XFS_BULKSTAT_UBLEFT(ubleft) && agno < mp->m_sb.sb_agcount) { | 424 | while (XFS_BULKSTAT_UBLEFT(ubleft) && agno < mp->m_sb.sb_agcount) { |
421 | cond_resched(); | 425 | cond_resched(); |
422 | bp = NULL; | 426 | bp = NULL; |
423 | down_read(&mp->m_peraglock); | ||
424 | error = xfs_ialloc_read_agi(mp, NULL, agno, &agbp); | 427 | error = xfs_ialloc_read_agi(mp, NULL, agno, &agbp); |
425 | up_read(&mp->m_peraglock); | ||
426 | if (error) { | 428 | if (error) { |
427 | /* | 429 | /* |
428 | * Skip this allocation group and go to the next one. | 430 | * Skip this allocation group and go to the next one. |
@@ -729,7 +731,7 @@ xfs_bulkstat( | |||
729 | /* | 731 | /* |
730 | * Done, we're either out of filesystem or space to put the data. | 732 | * Done, we're either out of filesystem or space to put the data. |
731 | */ | 733 | */ |
732 | kmem_free(irbuf); | 734 | kmem_free_large(irbuf); |
733 | *ubcountp = ubelem; | 735 | *ubcountp = ubelem; |
734 | /* | 736 | /* |
735 | * Found some inodes, return them now and return the error next time. | 737 | * Found some inodes, return them now and return the error next time. |
@@ -849,9 +851,7 @@ xfs_inumbers( | |||
849 | agbp = NULL; | 851 | agbp = NULL; |
850 | while (left > 0 && agno < mp->m_sb.sb_agcount) { | 852 | while (left > 0 && agno < mp->m_sb.sb_agcount) { |
851 | if (agbp == NULL) { | 853 | if (agbp == NULL) { |
852 | down_read(&mp->m_peraglock); | ||
853 | error = xfs_ialloc_read_agi(mp, NULL, agno, &agbp); | 854 | error = xfs_ialloc_read_agi(mp, NULL, agno, &agbp); |
854 | up_read(&mp->m_peraglock); | ||
855 | if (error) { | 855 | if (error) { |
856 | /* | 856 | /* |
857 | * If we can't read the AGI of this ag, | 857 | * If we can't read the AGI of this ag, |