This is the mail archive of the
cluster-cvs@sourceware.org
mailing list for the cluster.
master - Revert "gfs-kernel: bz298931 - GFS unlinked inode metadataleak"
- From: Abhijith Das <adas at fedoraproject dot org>
- To: cluster-cvs-relay at redhat dot com
- Date: Wed, 17 Sep 2008 16:55:27 +0000 (UTC)
- Subject: master - Revert "gfs-kernel: bz298931 - GFS unlinked inode metadataleak"
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=ca601c31a6e2d044f435c872abf9fc4f24ddb965
Commit: ca601c31a6e2d044f435c872abf9fc4f24ddb965
Parent: 932320c01e285d81dd59c421b406229a5e56b75d
Author: Abhijith Das <adas@redhat.com>
AuthorDate: Wed Sep 17 11:53:30 2008 -0500
Committer: Abhijith Das <adas@redhat.com>
CommitterDate: Wed Sep 17 11:53:30 2008 -0500
Revert "gfs-kernel: bz298931 - GFS unlinked inode metadata leak"
This reverts commit b32003be3784835ca1e79a490e052210303268ac.
---
gfs-kernel/src/gfs/daemon.c | 4 ----
gfs-kernel/src/gfs/incore.h | 4 ----
gfs-kernel/src/gfs/ioctl.c | 10 +++-------
gfs-kernel/src/gfs/rgrp.c | 18 +++---------------
gfs-kernel/src/gfs/rgrp.h | 3 +--
gfs-kernel/src/gfs/super.c | 1 -
6 files changed, 7 insertions(+), 33 deletions(-)
diff --git a/gfs-kernel/src/gfs/daemon.c b/gfs-kernel/src/gfs/daemon.c
index c0c8057..378e0a7 100644
--- a/gfs-kernel/src/gfs/daemon.c
+++ b/gfs-kernel/src/gfs/daemon.c
@@ -13,7 +13,6 @@
#include "recovery.h"
#include "super.h"
#include "unlinked.h"
-#include "rgrp.h"
/**
* gfs_scand - Look for cached glocks and inodes to toss from memory
@@ -174,10 +173,7 @@ gfs_inoded(void *data)
struct gfs_sbd *sdp = (struct gfs_sbd *)data;
while (!kthread_should_stop()) {
- uint64_t inodes, metadata;
gfs_unlinked_dealloc(sdp);
- gfs_reclaim_metadata(sdp, &inodes, &metadata,
- gfs_tune_get(sdp, gt_max_rgrp_free_mdata));
schedule_timeout_interruptible(gfs_tune_get(sdp, gt_inoded_secs) * HZ);
}
diff --git a/gfs-kernel/src/gfs/incore.h b/gfs-kernel/src/gfs/incore.h
index bad76fc..fedde49 100644
--- a/gfs-kernel/src/gfs/incore.h
+++ b/gfs-kernel/src/gfs/incore.h
@@ -203,8 +203,6 @@ struct gfs_bitmap {
uint32_t bi_len; /* The number of bitmap bytes in this bit block */
};
-#define RD_FL_META2FREE (0x00000001) /* rgrpd has freeable metadata */
-
/*
* Resource Group (Rgrp) descriptor structure.
* There is one of these for each resource (block) group in the FS.
@@ -238,7 +236,6 @@ struct gfs_rgrpd {
struct list_head rd_depend; /* Dependent inodes (MRU order) */
struct gfs_sbd *rd_sbd; /* FS incore superblock (fs instance) */
- uint32_t rd_flags; /* RD_FL_XXX : flags for this rgrpd */
};
/*
@@ -895,7 +892,6 @@ struct gfs_tune {
unsigned int gt_greedy_max;
unsigned int gt_rgrp_try_threshold;
unsigned int gt_statfs_fast;
- unsigned int gt_max_rgrp_free_mdata; /* Max # of rgrps to free metadata from */
};
/*
diff --git a/gfs-kernel/src/gfs/ioctl.c b/gfs-kernel/src/gfs/ioctl.c
index e012119..d5489b5 100644
--- a/gfs-kernel/src/gfs/ioctl.c
+++ b/gfs-kernel/src/gfs/ioctl.c
@@ -472,7 +472,6 @@ gi_get_tune(struct gfs_inode *ip,
gfs_printf("greedy_max %u\n", gt->gt_greedy_max);
gfs_printf("rgrp_try_threshold %u\n", gt->gt_rgrp_try_threshold);
gfs_printf("statfs_fast %u\n", gt->gt_statfs_fast);
- gfs_printf("max_rgrp_free_mdata %u\n", gt->gt_max_rgrp_free_mdata);
error = 0;
@@ -760,10 +759,8 @@ gi_set_tune(struct gfs_sbd *sdp, struct gfs_ioctl *gi, int from_user)
return error;
else
tune_set(gt_statfs_fast, x);
- } else if (strcmp(param, "max_rgrp_free_mdata") == 0) {
- if (sscanf(value, "%u", &x) != 1)
- return -EINVAL;
- tune_set(gt_max_rgrp_free_mdata, x);
+
+
} else
return -EINVAL;
@@ -798,8 +795,7 @@ gi_do_reclaim(struct gfs_inode *ip,
error = gfs_reclaim_metadata(ip->i_sbd,
&inodes,
- &metadata,
- ip->i_sbd->sd_rgcount);
+ &metadata);
if (error)
return error;
diff --git a/gfs-kernel/src/gfs/rgrp.c b/gfs-kernel/src/gfs/rgrp.c
index e3de6b1..e0c670f 100644
--- a/gfs-kernel/src/gfs/rgrp.c
+++ b/gfs-kernel/src/gfs/rgrp.c
@@ -1522,9 +1522,6 @@ blkfree_internal(struct gfs_sbd *sdp, uint64_t bstart, uint32_t blen,
bits->bi_len, buf_blk, new_state);
}
- if (new_state == GFS_BLKST_FREEMETA)
- rgd->rd_flags |= RD_FL_META2FREE;
-
return rgd;
}
@@ -2013,8 +2010,7 @@ gfs_rlist_free(struct gfs_rgrp_list *rlist)
int
gfs_reclaim_metadata(struct gfs_sbd *sdp,
uint64_t *inodes,
- uint64_t *metadata,
- uint32_t rg_max)
+ uint64_t *metadata)
{
struct gfs_holder ji_gh, ri_gh, rgd_gh, t_gh;
struct gfs_rgrpd *rgd;
@@ -2026,13 +2022,12 @@ gfs_reclaim_metadata(struct gfs_sbd *sdp,
uint32_t goal;
unsigned int x;
int error = 0;
- uint64_t rg_count = 0;
- rg_max = rg_max > sdp->sd_rgcount ? sdp->sd_rgcount : rg_max;
*inodes = *metadata = 0;
/* Acquire the jindex lock here so we don't deadlock with a
process writing the the jindex inode. :-( */
+
error = gfs_jindex_hold(sdp, &ji_gh);
if (error)
goto fail;
@@ -2042,11 +2037,8 @@ gfs_reclaim_metadata(struct gfs_sbd *sdp,
goto fail_jindex_relse;
for (rgd = gfs_rgrpd_get_first(sdp);
- rgd && rg_count < rg_max;
+ rgd;
rgd = gfs_rgrpd_get_next(rgd)) {
- if (!(rgd->rd_flags & RD_FL_META2FREE))
- continue;
-
error = gfs_glock_nq_init(rgd->rd_gl,
LM_ST_EXCLUSIVE, GL_NOCACHE,
&rgd_gh);
@@ -2059,7 +2051,6 @@ gfs_reclaim_metadata(struct gfs_sbd *sdp,
if (!rg->rg_freedi && !rg->rg_freemeta) {
gfs_glock_dq_uninit(&rgd_gh);
- rgd->rd_flags &= ~RD_FL_META2FREE;
continue;
}
@@ -2132,9 +2123,6 @@ gfs_reclaim_metadata(struct gfs_sbd *sdp,
gfs_glock_dq_uninit(&t_gh);
- rgd->rd_flags &= ~RD_FL_META2FREE;
- rg_count++;
-
gfs_glock_dq_uninit(&rgd_gh);
}
diff --git a/gfs-kernel/src/gfs/rgrp.h b/gfs-kernel/src/gfs/rgrp.h
index c10a9e0..0f5c620 100644
--- a/gfs-kernel/src/gfs/rgrp.h
+++ b/gfs-kernel/src/gfs/rgrp.h
@@ -70,7 +70,6 @@ void gfs_rlist_free(struct gfs_rgrp_list *rlist);
int gfs_reclaim_metadata(struct gfs_sbd *sdp,
uint64_t *inodes,
- uint64_t *metadata,
- uint32_t rg_max);
+ uint64_t *metadata);
#endif /* __RGRP_DOT_H__ */
diff --git a/gfs-kernel/src/gfs/super.c b/gfs-kernel/src/gfs/super.c
index 86f2cfa..781350e 100644
--- a/gfs-kernel/src/gfs/super.c
+++ b/gfs-kernel/src/gfs/super.c
@@ -75,7 +75,6 @@ gfs_tune_init(struct gfs_tune *gt)
gt->gt_greedy_max = HZ / 4;
gt->gt_rgrp_try_threshold = 100;
gt->gt_statfs_fast = 0;
- gt->gt_max_rgrp_free_mdata = 5;
}
/**