Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 58884c4d authored by Bob Peterson's avatar Bob Peterson Committed by Steven Whitehouse
Browse files

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: default avatarBob Peterson <rpeterso@redhat.com>
Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
parent 6aad1c3d
Loading
Loading
Loading
Loading
+4 −10
Original line number Original line Diff line number Diff line
@@ -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;