diff options
author | Steven Whitehouse <swhiteho@redhat.com> | 2012-11-13 09:50:35 -0500 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2012-11-13 09:50:35 -0500 |
commit | aa8920c96897dd82f0520f9e7db7311b42547ce6 (patch) | |
tree | 2f3c7eea4e11fd7c2eb59f7744edee3802fe5c35 /fs/gfs2 | |
parent | 4327a9bf71f4b021b675e01f24fefc647cff7513 (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.c | 3 |
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) | |||
1776 | static bool gfs2_select_rgrp(struct gfs2_rgrpd **pos, const struct gfs2_rgrpd *begin) | 1776 | static 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; |