GFS2: make sure rgrps are up to date in func gfs2_blk2rgrpd
This patch adds a call to gfs2_rindex_update from function gfs2_blk2rgrpd and removes calls to it that are made redundant by it. The problem is that a gfs2_grow can add rgrps to the rindex, then put those rgrps into use, thus rendering the rindex we read in at mount time incomplete. Signed-off-by: Bob Peterson <rpeterso@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
This commit is contained in:
parent
6aad1c3d3e
commit
58884c4df0
@ -332,6 +332,9 @@ struct gfs2_rgrpd *gfs2_blk2rgrpd(struct gfs2_sbd *sdp, u64 blk, bool exact)
|
|||||||
struct rb_node *n, *next;
|
struct rb_node *n, *next;
|
||||||
struct gfs2_rgrpd *cur;
|
struct gfs2_rgrpd *cur;
|
||||||
|
|
||||||
|
if (gfs2_rindex_update(sdp))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
spin_lock(&sdp->sd_rindex_spin);
|
spin_lock(&sdp->sd_rindex_spin);
|
||||||
n = sdp->sd_rindex_tree.rb_node;
|
n = sdp->sd_rindex_tree.rb_node;
|
||||||
while (n) {
|
while (n) {
|
||||||
@ -917,10 +920,6 @@ int gfs2_fitrim(struct file *filp, void __user *argp)
|
|||||||
if (!blk_queue_discard(q))
|
if (!blk_queue_discard(q))
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
ret = gfs2_rindex_update(sdp);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
if (argp == NULL) {
|
if (argp == NULL) {
|
||||||
r.start = 0;
|
r.start = 0;
|
||||||
r.len = ULLONG_MAX;
|
r.len = ULLONG_MAX;
|
||||||
@ -1671,13 +1670,8 @@ int gfs2_check_blk_type(struct gfs2_sbd *sdp, u64 no_addr, unsigned int type)
|
|||||||
{
|
{
|
||||||
struct gfs2_rgrpd *rgd;
|
struct gfs2_rgrpd *rgd;
|
||||||
struct gfs2_holder rgd_gh;
|
struct gfs2_holder rgd_gh;
|
||||||
int error;
|
int error = -EINVAL;
|
||||||
|
|
||||||
error = gfs2_rindex_update(sdp);
|
|
||||||
if (error)
|
|
||||||
return error;
|
|
||||||
|
|
||||||
error = -EINVAL;
|
|
||||||
rgd = gfs2_blk2rgrpd(sdp, no_addr, 1);
|
rgd = gfs2_blk2rgrpd(sdp, no_addr, 1);
|
||||||
if (!rgd)
|
if (!rgd)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
Loading…
Reference in New Issue
Block a user