diff options
| -rw-r--r-- | fs/gfs2/bmap.c | 9 | ||||
| -rw-r--r-- | fs/gfs2/rgrp.c | 2 | ||||
| -rw-r--r-- | fs/gfs2/rgrp.h | 1 |
3 files changed, 9 insertions, 3 deletions
diff --git a/fs/gfs2/bmap.c b/fs/gfs2/bmap.c index 5476c066d4e..ae7d205de0d 100644 --- a/fs/gfs2/bmap.c +++ b/fs/gfs2/bmap.c | |||
| @@ -780,7 +780,11 @@ static int do_strip(struct gfs2_inode *ip, struct buffer_head *dibh, | |||
| 780 | if (metadata) | 780 | if (metadata) |
| 781 | revokes = (height) ? sdp->sd_inptrs : sdp->sd_diptrs; | 781 | revokes = (height) ? sdp->sd_inptrs : sdp->sd_diptrs; |
| 782 | 782 | ||
| 783 | error = gfs2_rindex_hold(sdp, &ip->i_alloc->al_ri_gh); | 783 | if (ip != GFS2_I(sdp->sd_rindex)) |
| 784 | error = gfs2_rindex_hold(sdp, &ip->i_alloc->al_ri_gh); | ||
| 785 | else if (!sdp->sd_rgrps) | ||
| 786 | error = gfs2_ri_update(ip); | ||
| 787 | |||
| 784 | if (error) | 788 | if (error) |
| 785 | return error; | 789 | return error; |
| 786 | 790 | ||
| @@ -879,7 +883,8 @@ out_rg_gunlock: | |||
| 879 | out_rlist: | 883 | out_rlist: |
| 880 | gfs2_rlist_free(&rlist); | 884 | gfs2_rlist_free(&rlist); |
| 881 | out: | 885 | out: |
| 882 | gfs2_glock_dq_uninit(&ip->i_alloc->al_ri_gh); | 886 | if (ip != GFS2_I(sdp->sd_rindex)) |
| 887 | gfs2_glock_dq_uninit(&ip->i_alloc->al_ri_gh); | ||
| 883 | return error; | 888 | return error; |
| 884 | } | 889 | } |
| 885 | 890 | ||
diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c index 6375b3860a9..25dbe5c84df 100644 --- a/fs/gfs2/rgrp.c +++ b/fs/gfs2/rgrp.c | |||
| @@ -583,7 +583,7 @@ static int read_rindex_entry(struct gfs2_inode *ip, | |||
| 583 | * Returns: 0 on successful update, error code otherwise | 583 | * Returns: 0 on successful update, error code otherwise |
| 584 | */ | 584 | */ |
| 585 | 585 | ||
| 586 | static int gfs2_ri_update(struct gfs2_inode *ip) | 586 | int gfs2_ri_update(struct gfs2_inode *ip) |
| 587 | { | 587 | { |
| 588 | struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); | 588 | struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); |
| 589 | struct inode *inode = &ip->i_inode; | 589 | struct inode *inode = &ip->i_inode; |
diff --git a/fs/gfs2/rgrp.h b/fs/gfs2/rgrp.h index 0e35c0466f9..50c2bb04369 100644 --- a/fs/gfs2/rgrp.h +++ b/fs/gfs2/rgrp.h | |||
| @@ -48,6 +48,7 @@ extern int gfs2_inplace_reserve_i(struct gfs2_inode *ip, int hold_rindex, | |||
| 48 | 48 | ||
| 49 | extern void gfs2_inplace_release(struct gfs2_inode *ip); | 49 | extern void gfs2_inplace_release(struct gfs2_inode *ip); |
| 50 | 50 | ||
| 51 | extern int gfs2_ri_update(struct gfs2_inode *ip); | ||
| 51 | extern int gfs2_alloc_block(struct gfs2_inode *ip, u64 *bn, unsigned int *n); | 52 | extern int gfs2_alloc_block(struct gfs2_inode *ip, u64 *bn, unsigned int *n); |
| 52 | extern int gfs2_alloc_di(struct gfs2_inode *ip, u64 *bn, u64 *generation); | 53 | extern int gfs2_alloc_di(struct gfs2_inode *ip, u64 *bn, u64 *generation); |
| 53 | 54 | ||
