diff options
Diffstat (limited to 'fs/xfs/xfs_bmap.c')
| -rw-r--r-- | fs/xfs/xfs_bmap.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index a9b95d9cf2ad..7c6d9acd7154 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c | |||
| @@ -2629,14 +2629,12 @@ xfs_bmap_btalloc( | |||
| 2629 | if (startag == NULLAGNUMBER) | 2629 | if (startag == NULLAGNUMBER) |
| 2630 | startag = ag = 0; | 2630 | startag = ag = 0; |
| 2631 | notinit = 0; | 2631 | notinit = 0; |
| 2632 | down_read(&mp->m_peraglock); | ||
| 2633 | pag = xfs_perag_get(mp, ag); | 2632 | pag = xfs_perag_get(mp, ag); |
| 2634 | while (blen < ap->alen) { | 2633 | while (blen < ap->alen) { |
| 2635 | if (!pag->pagf_init && | 2634 | if (!pag->pagf_init && |
| 2636 | (error = xfs_alloc_pagf_init(mp, args.tp, | 2635 | (error = xfs_alloc_pagf_init(mp, args.tp, |
| 2637 | ag, XFS_ALLOC_FLAG_TRYLOCK))) { | 2636 | ag, XFS_ALLOC_FLAG_TRYLOCK))) { |
| 2638 | xfs_perag_put(pag); | 2637 | xfs_perag_put(pag); |
| 2639 | up_read(&mp->m_peraglock); | ||
| 2640 | return error; | 2638 | return error; |
| 2641 | } | 2639 | } |
| 2642 | /* | 2640 | /* |
| @@ -2669,10 +2667,8 @@ xfs_bmap_btalloc( | |||
| 2669 | 2667 | ||
| 2670 | error = xfs_filestream_new_ag(ap, &ag); | 2668 | error = xfs_filestream_new_ag(ap, &ag); |
| 2671 | xfs_perag_put(pag); | 2669 | xfs_perag_put(pag); |
| 2672 | if (error) { | 2670 | if (error) |
| 2673 | up_read(&mp->m_peraglock); | ||
| 2674 | return error; | 2671 | return error; |
| 2675 | } | ||
| 2676 | 2672 | ||
| 2677 | /* loop again to set 'blen'*/ | 2673 | /* loop again to set 'blen'*/ |
| 2678 | startag = NULLAGNUMBER; | 2674 | startag = NULLAGNUMBER; |
| @@ -2688,7 +2684,6 @@ xfs_bmap_btalloc( | |||
| 2688 | pag = xfs_perag_get(mp, ag); | 2684 | pag = xfs_perag_get(mp, ag); |
| 2689 | } | 2685 | } |
| 2690 | xfs_perag_put(pag); | 2686 | xfs_perag_put(pag); |
| 2691 | up_read(&mp->m_peraglock); | ||
| 2692 | /* | 2687 | /* |
| 2693 | * Since the above loop did a BUF_TRYLOCK, it is | 2688 | * Since the above loop did a BUF_TRYLOCK, it is |
| 2694 | * possible that there is space for this request. | 2689 | * possible that there is space for this request. |
