summaryrefslogtreecommitdiffstats
path: root/fs/gfs2
diff options
context:
space:
mode:
authorSteven Whitehouse <swhiteho@redhat.com>2012-11-13 09:50:35 -0500
committerSteven Whitehouse <swhiteho@redhat.com>2012-11-13 09:50:35 -0500
commitaa8920c96897dd82f0520f9e7db7311b42547ce6 (patch)
tree2f3c7eea4e11fd7c2eb59f7744edee3802fe5c35 /fs/gfs2
parent4327a9bf71f4b021b675e01f24fefc647cff7513 (diff)
GFS2: Fix one RG corner case
For filesystems with only a single resource group, we need to be careful that the allocation loop will not land up with a NULL resource group. This fixes a bug in a previous patch where the gfs2_rgrpd_get_next() function was being used instead of gfs2_rgrpd_get_first() Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/gfs2')
-rw-r--r--fs/gfs2/rgrp.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
index 99a619788c65..5625e93bf61f 100644
--- a/fs/gfs2/rgrp.c
+++ b/fs/gfs2/rgrp.c
@@ -1776,10 +1776,11 @@ static u32 gfs2_orlov_skip(const struct gfs2_inode *ip)
1776static bool gfs2_select_rgrp(struct gfs2_rgrpd **pos, const struct gfs2_rgrpd *begin) 1776static bool gfs2_select_rgrp(struct gfs2_rgrpd **pos, const struct gfs2_rgrpd *begin)
1777{ 1777{
1778 struct gfs2_rgrpd *rgd = *pos; 1778 struct gfs2_rgrpd *rgd = *pos;
1779 struct gfs2_sbd *sdp = rgd->rd_sbd;
1779 1780
1780 rgd = gfs2_rgrpd_get_next(rgd); 1781 rgd = gfs2_rgrpd_get_next(rgd);
1781 if (rgd == NULL) 1782 if (rgd == NULL)
1782 rgd = gfs2_rgrpd_get_next(NULL); 1783 rgd = gfs2_rgrpd_get_first(sdp);
1783 *pos = rgd; 1784 *pos = rgd;
1784 if (rgd != begin) /* If we didn't wrap */ 1785 if (rgd != begin) /* If we didn't wrap */
1785 return true; 1786 return true;