From: Steven Whitehouse <swhiteho@redhat.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [GFS2 PATCH] Remove rgrp and glock version numbers
Date: Thu, 31 Jan 2008 17:31:07 +0000 [thread overview]
Message-ID: <1201800667.22038.374.camel@quoit> (raw)
In-Reply-To: <1201797099.18461.170.camel@technetium.msp.redhat.com>
Hi,
Now in the -nmw git tree. Thanks,
Steve.
On Thu, 2008-01-31 at 10:31 -0600, Bob Peterson wrote:
> Hi,
>
> This patch further reduces GFS2's memory requirements by
> eliminating the 64-bit version number fields in lieu of
> a couple bits.
>
> Regards,
>
> Bob Peterson
> Red Hat GFS
>
> Signed-off-by: Bob Peterson <rpeterso@redhat.com>
> --
> fs/gfs2/glock.c | 3 +--
> fs/gfs2/glops.c | 10 ++++++++--
> fs/gfs2/incore.h | 5 ++---
> fs/gfs2/ops_fstype.c | 4 ++--
> fs/gfs2/rgrp.c | 14 +++++++-------
> 5 files changed, 20 insertions(+), 16 deletions(-)
>
> diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
> index 78cd1cd..e4ae1ef 100644
> --- a/fs/gfs2/glock.c
> +++ b/fs/gfs2/glock.c
> @@ -1,6 +1,6 @@
> /*
> * Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
> - * Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved.
> + * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved.
> *
> * This copyrighted material is made available to anyone wishing to use,
> * modify, copy, or redistribute it subject to the terms and conditions
> @@ -338,7 +338,6 @@ int gfs2_glock_get(struct gfs2_sbd *sdp, u64 number,
> gl->gl_ip = 0;
> gl->gl_ops = glops;
> gl->gl_req_gh = NULL;
> - gl->gl_vn = 0;
> gl->gl_stamp = jiffies;
> gl->gl_tchange = jiffies;
> gl->gl_object = NULL;
> diff --git a/fs/gfs2/glops.c b/fs/gfs2/glops.c
> index c663b7a..d31bada 100644
> --- a/fs/gfs2/glops.c
> +++ b/fs/gfs2/glops.c
> @@ -1,6 +1,6 @@
> /*
> * Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
> - * Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved.
> + * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved.
> *
> * This copyrighted material is made available to anyone wishing to use,
> * modify, copy, or redistribute it subject to the terms and conditions
> @@ -126,7 +126,13 @@ static void meta_go_inval(struct gfs2_glock *gl, int flags)
> return;
>
> gfs2_meta_inval(gl);
> - gl->gl_vn++;
> + if (gl->gl_object == GFS2_I(gl->gl_sbd->sd_rindex))
> + gl->gl_sbd->sd_rindex_uptodate = 0;
> + else if (gl->gl_ops == &gfs2_rgrp_glops && gl->gl_object) {
> + struct gfs2_rgrpd *rgd = (struct gfs2_rgrpd *)gl->gl_object;
> +
> + rgd->rd_flags &= ~GFS2_RDF_UPTODATE;
> + }
> }
>
> /**
> diff --git a/fs/gfs2/incore.h b/fs/gfs2/incore.h
> index bf3c673..35e2459 100644
> --- a/fs/gfs2/incore.h
> +++ b/fs/gfs2/incore.h
> @@ -85,7 +85,6 @@ struct gfs2_rgrpd {
> u32 rd_data; /* num of data blocks in rgrp */
> u32 rd_bitbytes; /* number of bytes in data bitmaps */
> struct gfs2_rgrp_host rd_rg;
> - u64 rd_rg_vn;
> struct gfs2_bitmap *rd_bits;
> unsigned int rd_bh_count;
> struct mutex rd_mutex;
> @@ -97,6 +96,7 @@ struct gfs2_rgrpd {
> unsigned char rd_flags;
> #define GFS2_RDF_CHECK 0x01 /* Need to check for unlinked inodes */
> #define GFS2_RDF_NOALLOC 0x02 /* rg prohibits allocation */
> +#define GFS2_RDF_UPTODATE 0x04 /* rg is up to date */
> };
>
> enum gfs2_state_bits {
> @@ -196,7 +196,6 @@ struct gfs2_glock {
> char *gl_lvb;
> atomic_t gl_lvb_count;
>
> - u64 gl_vn;
> unsigned long gl_stamp;
> unsigned long gl_tchange;
> void *gl_object;
> @@ -531,7 +530,7 @@ struct gfs2_sbd {
>
> /* Resource group stuff */
>
> - u64 sd_rindex_vn;
> + int sd_rindex_uptodate;
> spinlock_t sd_rindex_spin;
> struct mutex sd_rindex_mutex;
> struct list_head sd_rindex_list;
> diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c
> index 43d511b..f02261c 100644
> --- a/fs/gfs2/ops_fstype.c
> +++ b/fs/gfs2/ops_fstype.c
> @@ -1,6 +1,6 @@
> /*
> * Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
> - * Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved.
> + * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved.
> *
> * This copyrighted material is made available to anyone wishing to use,
> * modify, copy, or redistribute it subject to the terms and conditions
> @@ -542,7 +542,7 @@ static int init_inodes(struct gfs2_sbd *sdp, int undo)
> }
> ip = GFS2_I(sdp->sd_rindex);
> set_bit(GLF_STICKY, &ip->i_gl->gl_flags);
> - sdp->sd_rindex_vn = ip->i_gl->gl_vn - 1;
> + sdp->sd_rindex_uptodate = 0;
>
> /* Read in the quota inode */
> sdp->sd_quota_inode = gfs2_lookup_simple(sdp->sd_master_dir, "quota");
> diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
> index 5fd8710..3f10b1f 100644
> --- a/fs/gfs2/rgrp.c
> +++ b/fs/gfs2/rgrp.c
> @@ -540,7 +540,7 @@ static int read_rindex_entry(struct gfs2_inode *ip,
> return error;
>
> rgd->rd_gl->gl_object = rgd;
> - rgd->rd_rg_vn = rgd->rd_gl->gl_vn - 1;
> + rgd->rd_flags &= ~GFS2_RDF_UPTODATE;
> rgd->rd_flags |= GFS2_RDF_CHECK;
> return error;
> }
> @@ -576,7 +576,7 @@ static int gfs2_ri_update(struct gfs2_inode *ip)
> }
> }
>
> - sdp->sd_rindex_vn = ip->i_gl->gl_vn;
> + sdp->sd_rindex_uptodate = 1;
> return 0;
> }
>
> @@ -610,7 +610,7 @@ static int gfs2_ri_update_special(struct gfs2_inode *ip)
> }
> }
>
> - sdp->sd_rindex_vn = ip->i_gl->gl_vn;
> + sdp->sd_rindex_uptodate = 1;
> return 0;
> }
>
> @@ -643,9 +643,9 @@ int gfs2_rindex_hold(struct gfs2_sbd *sdp, struct gfs2_holder *ri_gh)
> return error;
>
> /* Read new copy from disk if we don't have the latest */
> - if (sdp->sd_rindex_vn != gl->gl_vn) {
> + if (!sdp->sd_rindex_uptodate) {
> mutex_lock(&sdp->sd_rindex_mutex);
> - if (sdp->sd_rindex_vn != gl->gl_vn) {
> + if (!sdp->sd_rindex_uptodate) {
> error = gfs2_ri_update(ip);
> if (error)
> gfs2_glock_dq_uninit(ri_gh);
> @@ -737,9 +737,9 @@ int gfs2_rgrp_bh_get(struct gfs2_rgrpd *rgd)
> }
> }
>
> - if (rgd->rd_rg_vn != gl->gl_vn) {
> + if (!(rgd->rd_flags & GFS2_RDF_UPTODATE)) {
> gfs2_rgrp_in(rgd, (rgd->rd_bits[0].bi_bh)->b_data);
> - rgd->rd_rg_vn = gl->gl_vn;
> + rgd->rd_flags |= GFS2_RDF_UPTODATE;
> }
>
> spin_lock(&sdp->sd_rindex_spin);
>
>
prev parent reply other threads:[~2008-01-31 17:31 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-31 16:31 [Cluster-devel] [GFS2 PATCH] Remove rgrp and glock version numbers Bob Peterson
2008-01-31 17:31 ` Steven Whitehouse [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1201800667.22038.374.camel@quoit \
--to=swhiteho@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.