diff --git a/fs/gfs2/bmap.c b/fs/gfs2/bmap.c
index 68bc3be..f570d8c 100644
--- a/fs/gfs2/bmap.c
+++ b/fs/gfs2/bmap.c
@@ -59,7 +59,7 @@
  *
  * Returns: errno
  */
-
+#if 0
 int gfs2_unstuffer_sync(struct gfs2_inode *ip, struct buffer_head *dibh,
 			uint64_t block, void *private)
 {
@@ -77,6 +77,7 @@
 
 	return error;
 }
+#endif  /*  0  */
 
 /**
  * gfs2_unstuff_dinode - Unstuff a dinode when the data has grown too big
diff --git a/fs/gfs2/bmap.h b/fs/gfs2/bmap.h
index ee9ec8d..23fb658 100644
--- a/fs/gfs2/bmap.h
+++ b/fs/gfs2/bmap.h
@@ -13,8 +13,6 @@
 typedef int (*gfs2_unstuffer_t) (struct gfs2_inode * ip,
 				 struct buffer_head * dibh, uint64_t block,
 				 void *private);
-int gfs2_unstuffer_sync(struct gfs2_inode *ip, struct buffer_head *dibh,
-			uint64_t block, void *private);
 int gfs2_unstuff_dinode(struct gfs2_inode *ip, gfs2_unstuffer_t unstuffer,
 			void *private);
 
diff --git a/fs/gfs2/dir.c b/fs/gfs2/dir.c
index ffc1bef..0404783 100644
--- a/fs/gfs2/dir.c
+++ b/fs/gfs2/dir.c
@@ -669,10 +669,10 @@
  * Takes a dent from which to grab space as an argument. Returns the
  * newly created dent.
  */
-struct gfs2_dirent *gfs2_init_dirent(struct inode *inode,
-				     struct gfs2_dirent *dent,
-				     const struct qstr *name,
-				     struct buffer_head *bh)
+static struct gfs2_dirent *gfs2_init_dirent(struct inode *inode,
+					    struct gfs2_dirent *dent,
+					    const struct qstr *name,
+					    struct buffer_head *bh)
 {
 	struct gfs2_inode *ip = inode->u.generic_ip;
 	struct gfs2_dirent *ndent;
diff --git a/fs/gfs2/eaops.c b/fs/gfs2/eaops.c
index 4b9f6cf..1b376ec 100644
--- a/fs/gfs2/eaops.c
+++ b/fs/gfs2/eaops.c
@@ -167,7 +167,7 @@
 	return gfs2_ea_remove_i(ip, er);
 }
 
-struct gfs2_eattr_operations gfs2_user_eaops = {
+static struct gfs2_eattr_operations gfs2_user_eaops = {
 	.eo_get = user_eo_get,
 	.eo_set = user_eo_set,
 	.eo_remove = user_eo_remove,
diff --git a/fs/gfs2/eaops.h b/fs/gfs2/eaops.h
index f83c497..30ec6a0 100644
--- a/fs/gfs2/eaops.h
+++ b/fs/gfs2/eaops.h
@@ -21,7 +21,6 @@
 
 unsigned int gfs2_ea_name2type(const char *name, char **truncated_name);
 
-extern struct gfs2_eattr_operations gfs2_user_eaops;
 extern struct gfs2_eattr_operations gfs2_system_eaops;
 
 extern struct gfs2_eattr_operations *gfs2_ea_ops[];
diff --git a/fs/gfs2/eattr.c b/fs/gfs2/eattr.c
index 8219d47..d3316ca 100644
--- a/fs/gfs2/eattr.c
+++ b/fs/gfs2/eattr.c
@@ -358,6 +358,7 @@
 	return error;
 }
 
+#if 0
 
 static int gfs2_ea_repack_i(struct gfs2_inode *ip)
 {
@@ -382,6 +383,8 @@
 	return error;
 }
 
+#endif  /*  0  */
+
 struct ea_list {
 	struct gfs2_ea_request *ei_er;
 	unsigned int ei_size;
diff --git a/fs/gfs2/eattr.h b/fs/gfs2/eattr.h
index 2b4152b..ffd5668 100644
--- a/fs/gfs2/eattr.h
+++ b/fs/gfs2/eattr.h
@@ -61,8 +61,6 @@
 	struct gfs2_ea_header *el_prev;
 };
 
-int gfs2_ea_repack(struct gfs2_inode *ip);
-
 int gfs2_ea_get_i(struct gfs2_inode *ip, struct gfs2_ea_request *er);
 int gfs2_ea_set_i(struct gfs2_inode *ip, struct gfs2_ea_request *er);
 int gfs2_ea_remove_i(struct gfs2_inode *ip, struct gfs2_ea_request *er);
diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
index f82ecc0..0a5a0e8 100644
--- a/fs/gfs2/glock.c
+++ b/fs/gfs2/glock.c
@@ -47,6 +47,8 @@
 
 typedef void (*glock_examiner) (struct gfs2_glock * gl);
 
+static int gfs2_dump_lockstate(struct gfs2_sbd *sdp);
+
 /**
  * relaxed_state_ok - is a requested lock compatible with the current lock mode?
  * @actual: the current state of the lock
@@ -228,8 +230,8 @@
  * Returns: NULL, or the struct gfs2_glock with the requested number
  */
 
-struct gfs2_glock *gfs2_glock_find(struct gfs2_sbd *sdp,
-				   struct lm_lockname *name)
+static struct gfs2_glock *gfs2_glock_find(struct gfs2_sbd *sdp,
+					  struct lm_lockname *name)
 {
 	struct gfs2_gl_hash_bucket *bucket = &sdp->sd_gl_hash[gl_hash(name)];
 	struct gfs2_glock *gl;
@@ -421,8 +423,9 @@
  * Returns: the holder structure, NULL on ENOMEM
  */
 
-struct gfs2_holder *gfs2_holder_get(struct gfs2_glock *gl, unsigned int state,
-				    int flags, gfp_t gfp_flags)
+static struct gfs2_holder *gfs2_holder_get(struct gfs2_glock *gl,
+					   unsigned int state,
+					   int flags, gfp_t gfp_flags)
 {
 	struct gfs2_holder *gh;
 
@@ -442,7 +445,7 @@
  *
  */
 
-void gfs2_holder_put(struct gfs2_holder *gh)
+static void gfs2_holder_put(struct gfs2_holder *gh)
 {
 	gfs2_holder_uninit(gh);
 	kfree(gh);
@@ -674,7 +677,7 @@
  * Returns: 1 if the glock is acquired
  */
 
-int gfs2_glmutex_trylock(struct gfs2_glock *gl)
+static int gfs2_glmutex_trylock(struct gfs2_glock *gl)
 {
 	int acquired = 1;
 
@@ -1301,7 +1304,8 @@
  *
  */
 
-void gfs2_glock_prefetch(struct gfs2_glock *gl, unsigned int state, int flags)
+static void gfs2_glock_prefetch(struct gfs2_glock *gl, unsigned int state,
+				int flags)
 {
 	struct gfs2_glock_operations *glops = gl->gl_ops;
 
@@ -1329,7 +1333,7 @@
  * @gl: the glock
  *
  */
-
+#if 0
 void gfs2_glock_force_drop(struct gfs2_glock *gl)
 {
 	struct gfs2_holder gh;
@@ -1345,6 +1349,7 @@
 	wait_for_completion(&gh.gh_wait);
 	gfs2_holder_uninit(&gh);
 }
+#endif  /*  0  */
 
 static void greedy_work(void *data)
 {
@@ -1697,6 +1702,7 @@
 	gfs2_glock_put(gl);
 }
 
+#if 0
 void gfs2_lvb_sync(struct gfs2_glock *gl)
 {
 	gfs2_glmutex_lock(gl);
@@ -1707,6 +1713,7 @@
 
 	gfs2_glmutex_unlock(gl);
 }
+#endif  /*  0  */
 
 static void blocking_cb(struct gfs2_sbd *sdp, struct lm_lockname *name,
 			unsigned int state)
@@ -2307,7 +2314,7 @@
  *
  */
 
-int gfs2_dump_lockstate(struct gfs2_sbd *sdp)
+static int gfs2_dump_lockstate(struct gfs2_sbd *sdp)
 {
 	struct gfs2_gl_hash_bucket *bucket;
 	struct gfs2_glock *gl;
diff --git a/fs/gfs2/glock.h b/fs/gfs2/glock.h
index 6f9c88e..a36b265 100644
--- a/fs/gfs2/glock.h
+++ b/fs/gfs2/glock.h
@@ -73,8 +73,6 @@
 	return ret;
 }
 
-struct gfs2_glock *gfs2_glock_find(struct gfs2_sbd *sdp,
-				   struct lm_lockname *name);
 int gfs2_glock_get(struct gfs2_sbd *sdp,
 		   uint64_t number, struct gfs2_glock_operations *glops,
 		   int create, struct gfs2_glock **glp);
@@ -85,15 +83,11 @@
 void gfs2_holder_reinit(unsigned int state, unsigned flags,
 			struct gfs2_holder *gh);
 void gfs2_holder_uninit(struct gfs2_holder *gh);
-struct gfs2_holder *gfs2_holder_get(struct gfs2_glock *gl, unsigned int state,
-				    int flags, gfp_t gfp_flags);
-void gfs2_holder_put(struct gfs2_holder *gh);
 
 void gfs2_glock_xmote_th(struct gfs2_glock *gl, unsigned int state, int flags);
 void gfs2_glock_drop_th(struct gfs2_glock *gl);
 
 void gfs2_glmutex_lock(struct gfs2_glock *gl);
-int gfs2_glmutex_trylock(struct gfs2_glock *gl);
 void gfs2_glmutex_unlock(struct gfs2_glock *gl);
 
 int gfs2_glock_nq(struct gfs2_holder *gh);
@@ -101,9 +95,6 @@
 int gfs2_glock_wait(struct gfs2_holder *gh);
 void gfs2_glock_dq(struct gfs2_holder *gh);
 
-void gfs2_glock_prefetch(struct gfs2_glock *gl, unsigned int state, int flags);
-void gfs2_glock_force_drop(struct gfs2_glock *gl);
-
 int gfs2_glock_be_greedy(struct gfs2_glock *gl, unsigned int time);
 
 void gfs2_glock_dq_uninit(struct gfs2_holder *gh);
@@ -148,7 +139,6 @@
 
 int gfs2_lvb_hold(struct gfs2_glock *gl);
 void gfs2_lvb_unhold(struct gfs2_glock *gl);
-void gfs2_lvb_sync(struct gfs2_glock *gl);
 
 void gfs2_glock_cb(lm_fsdata_t *fsdata, unsigned int type, void *data);
 
@@ -161,6 +151,4 @@
 void gfs2_scand_internal(struct gfs2_sbd *sdp);
 void gfs2_gl_hash_clear(struct gfs2_sbd *sdp, int wait);
 
-int gfs2_dump_lockstate(struct gfs2_sbd *sdp);
-
 #endif /* __GLOCK_DOT_H__ */
diff --git a/fs/gfs2/lm.c b/fs/gfs2/lm.c
index 5b3c56d..06a785e 100644
--- a/fs/gfs2/lm.c
+++ b/fs/gfs2/lm.c
@@ -188,11 +188,13 @@
 		sdp->sd_lockstruct.ls_ops->lm_unhold_lvb(lock, lvb);
 }
 
+#if 0
 void gfs2_lm_sync_lvb(struct gfs2_sbd *sdp, lm_lock_t *lock, char *lvb)
 {
 	if (likely(!test_bit(SDF_SHUTDOWN, &sdp->sd_flags)))
 		sdp->sd_lockstruct.ls_ops->lm_sync_lvb(lock, lvb);
 }
+#endif  /*  0  */
 
 int gfs2_lm_plock_get(struct gfs2_sbd *sdp, struct lm_lockname *name,
 		      struct file *file, struct file_lock *fl)
diff --git a/fs/gfs2/lm.h b/fs/gfs2/lm.h
index ec81242..4ee5c34 100644
--- a/fs/gfs2/lm.h
+++ b/fs/gfs2/lm.h
@@ -26,7 +26,6 @@
 void gfs2_lm_cancel(struct gfs2_sbd *sdp, lm_lock_t *lock);
 int gfs2_lm_hold_lvb(struct gfs2_sbd *sdp, lm_lock_t *lock, char **lvbp);
 void gfs2_lm_unhold_lvb(struct gfs2_sbd *sdp, lm_lock_t *lock, char *lvb);
-void gfs2_lm_sync_lvb(struct gfs2_sbd *sdp, lm_lock_t *lock, char *lvb);
 int gfs2_lm_plock_get(struct gfs2_sbd *sdp,
 		     struct lm_lockname *name,
 		     struct file *file, struct file_lock *fl);
diff --git a/fs/gfs2/locking/dlm/lock.c b/fs/gfs2/locking/dlm/lock.c
index a309b79..3b0dfd7 100644
--- a/fs/gfs2/locking/dlm/lock.c
+++ b/fs/gfs2/locking/dlm/lock.c
@@ -158,8 +158,8 @@
 	str->namelen = GDLM_STRNAME_BYTES;
 }
 
-int gdlm_create_lp(struct gdlm_ls *ls, struct lm_lockname *name,
-		   struct gdlm_lock **lpp)
+static int gdlm_create_lp(struct gdlm_ls *ls, struct lm_lockname *name,
+			  struct gdlm_lock **lpp)
 {
 	struct gdlm_lock *lp;
 
@@ -276,7 +276,7 @@
 	return LM_OUT_ASYNC;
 }
 
-unsigned int gdlm_do_unlock(struct gdlm_lock *lp)
+static unsigned int gdlm_do_unlock(struct gdlm_lock *lp)
 {
 	struct gdlm_ls *ls = lp->ls;
 	unsigned int lkf = 0;
@@ -378,7 +378,7 @@
 		clear_bit(LFL_DLM_CANCEL, &lp->flags);
 }
 
-int gdlm_add_lvb(struct gdlm_lock *lp)
+static int gdlm_add_lvb(struct gdlm_lock *lp)
 {
 	char *lvb;
 
@@ -391,7 +391,7 @@
 	return 0;
 }
 
-void gdlm_del_lvb(struct gdlm_lock *lp)
+static void gdlm_del_lvb(struct gdlm_lock *lp)
 {
 	kfree(lp->lvb);
 	lp->lvb = NULL;
diff --git a/fs/gfs2/locking/dlm/lock_dlm.h b/fs/gfs2/locking/dlm/lock_dlm.h
index e6c1e47..530c2f5 100644
--- a/fs/gfs2/locking/dlm/lock_dlm.h
+++ b/fs/gfs2/locking/dlm/lock_dlm.h
@@ -162,12 +162,8 @@
 void gdlm_queue_delayed(struct gdlm_lock *);
 void gdlm_submit_delayed(struct gdlm_ls *);
 int gdlm_release_all_locks(struct gdlm_ls *);
-int gdlm_create_lp(struct gdlm_ls *, struct lm_lockname *, struct gdlm_lock **);
 void gdlm_delete_lp(struct gdlm_lock *);
-int gdlm_add_lvb(struct gdlm_lock *);
-void gdlm_del_lvb(struct gdlm_lock *);
 unsigned int gdlm_do_lock(struct gdlm_lock *);
-unsigned int gdlm_do_unlock(struct gdlm_lock *);
 
 int gdlm_get_lock(lm_lockspace_t *, struct lm_lockname *, lm_lock_t **);
 void gdlm_put_lock(lm_lock_t *);
diff --git a/fs/gfs2/locking/dlm/main.c b/fs/gfs2/locking/dlm/main.c
index 3c9adf1..89728c9 100644
--- a/fs/gfs2/locking/dlm/main.c
+++ b/fs/gfs2/locking/dlm/main.c
@@ -16,7 +16,7 @@
 
 extern struct lm_lockops gdlm_ops;
 
-int __init init_lock_dlm(void)
+static int __init init_lock_dlm(void)
 {
 	int error;
 
@@ -48,7 +48,7 @@
 	return 0;
 }
 
-void __exit exit_lock_dlm(void)
+static void __exit exit_lock_dlm(void)
 {
 	gdlm_plock_exit();
 	gdlm_sysfs_exit();
diff --git a/fs/gfs2/locking/nolock/main.c b/fs/gfs2/locking/nolock/main.c
index ecd3737..97ffac5 100644
--- a/fs/gfs2/locking/nolock/main.c
+++ b/fs/gfs2/locking/nolock/main.c
@@ -21,7 +21,7 @@
 	unsigned int nl_lvb_size;
 };
 
-struct lm_lockops nolock_ops;
+static struct lm_lockops nolock_ops;
 
 static int nolock_mount(char *table_name, char *host_data,
 			lm_callback_t cb, lm_fsdata_t *fsdata,
@@ -208,7 +208,7 @@
 {
 }
 
-struct lm_lockops nolock_ops = {
+static struct lm_lockops nolock_ops = {
 	.lm_proto_name = "lock_nolock",
 	.lm_mount = nolock_mount,
 	.lm_others_may_mount = nolock_others_may_mount,
@@ -229,7 +229,7 @@
 	.lm_owner = THIS_MODULE,
 };
 
-int __init init_nolock(void)
+static int __init init_nolock(void)
 {
 	int error;
 
@@ -245,7 +245,7 @@
 	return 0;
 }
 
-void __exit exit_nolock(void)
+static void __exit exit_nolock(void)
 {
 	gfs_unregister_lockproto(&nolock_ops);
 }
diff --git a/fs/gfs2/lvb.c b/fs/gfs2/lvb.c
index 63b815d..9d72872 100644
--- a/fs/gfs2/lvb.c
+++ b/fs/gfs2/lvb.c
@@ -43,6 +43,7 @@
 	str->qb_value = cpu_to_be64(qb->qb_value);
 }
 
+#if 0
 void gfs2_quota_lvb_print(struct gfs2_quota_lvb *qb)
 {
 	pv(qb, qb_magic, "%u");
@@ -50,4 +51,5 @@
 	pv(qb, qb_warn, "%llu");
 	pv(qb, qb_value, "%lld");
 }
+#endif  /*  0  */
 
diff --git a/fs/gfs2/lvb.h b/fs/gfs2/lvb.h
index 1b9eb69..3c4c174 100644
--- a/fs/gfs2/lvb.h
+++ b/fs/gfs2/lvb.h
@@ -14,7 +14,6 @@
 
 void gfs2_quota_lvb_in(struct gfs2_quota_lvb *qb, char *lvb);
 void gfs2_quota_lvb_out(struct gfs2_quota_lvb *qb, char *lvb);
-void gfs2_quota_lvb_print(struct gfs2_quota_lvb *qb);
 
 #endif /* __LVB_DOT_H__ */
 
diff --git a/fs/gfs2/ondisk.c b/fs/gfs2/ondisk.c
index acfc944..b11e659 100644
--- a/fs/gfs2/ondisk.c
+++ b/fs/gfs2/ondisk.c
@@ -28,7 +28,7 @@
  * @count: the number of bytes
  *
  */
-
+#if 0
 static void print_array(char *title, char *buf, int count)
 {
 	int x;
@@ -42,6 +42,7 @@
 	if (x % 16)
 		printk("\n");
 }
+#endif  /*  0  */
 
 /*
  * gfs2_xxx_in - read in an xxx struct
@@ -72,7 +73,7 @@
 	str->no_addr = cpu_to_be64(no->no_addr);
 }
 
-void gfs2_inum_print(struct gfs2_inum *no)
+static void gfs2_inum_print(struct gfs2_inum *no)
 {
 	pv(no, no_formal_ino, "%llu");
 	pv(no, no_addr, "%llu");
@@ -96,7 +97,7 @@
 	str->mh_format = cpu_to_be32(mh->mh_format);
 }
 
-void gfs2_meta_header_print(struct gfs2_meta_header *mh)
+static void gfs2_meta_header_print(struct gfs2_meta_header *mh)
 {
 	pv(mh, mh_magic, "0x%.8X");
 	pv(mh, mh_type, "%u");
@@ -121,6 +122,7 @@
 	memcpy(sb->sb_locktable, str->sb_locktable, GFS2_LOCKNAME_LEN);
 }
 
+#if 0
 void gfs2_sb_print(struct gfs2_sb *sb)
 {
 	gfs2_meta_header_print(&sb->sb_header);
@@ -136,6 +138,7 @@
 	pv(sb, sb_lockproto, "%s");
 	pv(sb, sb_locktable, "%s");
 }
+#endif  /*  0  */
 
 void gfs2_rindex_in(struct gfs2_rindex *ri, char *buf)
 {
@@ -149,6 +152,7 @@
 
 }
 
+#if 0
 void gfs2_rindex_out(struct gfs2_rindex *ri, char *buf)
 {
 	struct gfs2_rindex *str = (struct gfs2_rindex *)buf;
@@ -163,6 +167,8 @@
 	memset(str->ri_reserved, 0, sizeof(str->ri_reserved));
 }
 
+#endif  /*  0  */
+
 void gfs2_rindex_print(struct gfs2_rindex *ri)
 {
 	pv(ri, ri_addr, "%llu");
@@ -196,6 +202,7 @@
 	memset(&str->rg_reserved, 0, sizeof(str->rg_reserved));
 }
 
+#if 0
 void gfs2_rgrp_print(struct gfs2_rgrp *rg)
 {
 	gfs2_meta_header_print(&rg->rg_header);
@@ -205,6 +212,7 @@
 
 	pa(rg, rg_reserved, 36);
 }
+#endif  /*  0  */
 
 void gfs2_quota_in(struct gfs2_quota *qu, char *buf)
 {
@@ -215,6 +223,8 @@
 	qu->qu_value = be64_to_cpu(str->qu_value);
 }
 
+#if 0
+
 void gfs2_quota_out(struct gfs2_quota *qu, char *buf)
 {
 	struct gfs2_quota *str = (struct gfs2_quota *)buf;
@@ -231,6 +241,8 @@
 	pv(qu, qu_value, "%lld");
 }
 
+#endif  /*  0  */
+
 void gfs2_dinode_in(struct gfs2_dinode *di, char *buf)
 {
 	struct gfs2_dinode *str = (struct gfs2_dinode *)buf;
@@ -327,6 +339,8 @@
 	pv(di, di_eattr, "%llu");
 }
 
+#if 0
+
 void gfs2_dirent_print(struct gfs2_dirent *de, char *name)
 {
 	char buf[GFS2_FNAMESIZE + 1];
@@ -394,6 +408,8 @@
 	printk(KERN_INFO "  name = %s\n", buf);
 }
 
+#endif  /*  0  */
+
 void gfs2_log_header_in(struct gfs2_log_header *lh, char *buf)
 {
 	struct gfs2_log_header *str = (struct gfs2_log_header *)buf;
@@ -406,6 +422,8 @@
 	lh->lh_hash = be32_to_cpu(str->lh_hash);
 }
 
+#if 0
+
 void gfs2_log_header_print(struct gfs2_log_header *lh)
 {
 	gfs2_meta_header_print(&lh->lh_header);
@@ -427,6 +445,8 @@
 	pa(ld, ld_reserved, 32);
 }
 
+#endif  /*  0  */
+
 void gfs2_inum_range_in(struct gfs2_inum_range *ir, char *buf)
 {
 	struct gfs2_inum_range *str = (struct gfs2_inum_range *)buf;
@@ -443,11 +463,13 @@
 	str->ir_length = cpu_to_be64(ir->ir_length);
 }
 
+#if 0
 void gfs2_inum_range_print(struct gfs2_inum_range *ir)
 {
 	pv(ir, ir_start, "%llu");
 	pv(ir, ir_length, "%llu");
 }
+#endif  /*  0  */
 
 void gfs2_statfs_change_in(struct gfs2_statfs_change *sc, char *buf)
 {
@@ -467,12 +489,14 @@
 	str->sc_dinodes = cpu_to_be64(sc->sc_dinodes);
 }
 
+#if 0
 void gfs2_statfs_change_print(struct gfs2_statfs_change *sc)
 {
 	pv(sc, sc_total, "%lld");
 	pv(sc, sc_free, "%lld");
 	pv(sc, sc_dinodes, "%lld");
 }
+#endif  /*  0  */
 
 void gfs2_unlinked_tag_in(struct gfs2_unlinked_tag *ut, char *buf)
 {
@@ -491,12 +515,16 @@
 	str->__pad = 0;
 }
 
+#if 0
+
 void gfs2_unlinked_tag_print(struct gfs2_unlinked_tag *ut)
 {
 	gfs2_inum_print(&ut->ut_inum);
 	pv(ut, ut_flags, "%u");
 }
 
+#endif  /*  0  */
+
 void gfs2_quota_change_in(struct gfs2_quota_change *qc, char *buf)
 {
 	struct gfs2_quota_change *str = (struct gfs2_quota_change *)buf;
@@ -506,6 +534,8 @@
 	qc->qc_id = be32_to_cpu(str->qc_id);
 }
 
+#if 0
+
 void gfs2_quota_change_print(struct gfs2_quota_change *qc)
 {
 	pv(qc, qc_change, "%lld");
@@ -513,5 +543,5 @@
 	pv(qc, qc_id, "%u");
 }
 
-
+#endif  /*  0  */
 
diff --git a/fs/gfs2/quota.c b/fs/gfs2/quota.c
index 90e32a3..942c4c8 100644
--- a/fs/gfs2/quota.c
+++ b/fs/gfs2/quota.c
@@ -1086,6 +1086,7 @@
 	return error;
 }
 
+#if 0
 int gfs2_quota_read(struct gfs2_sbd *sdp, int user, uint32_t id,
 		    struct gfs2_quota *q)
 {
@@ -1121,6 +1122,7 @@
 
 	return error;
 }
+#endif  /*  0  */
 
 int gfs2_quota_init(struct gfs2_sbd *sdp)
 {
diff --git a/fs/gfs2/quota.h b/fs/gfs2/quota.h
index 005529f..1baeeb2 100644
--- a/fs/gfs2/quota.h
+++ b/fs/gfs2/quota.h
@@ -24,8 +24,6 @@
 
 int gfs2_quota_sync(struct gfs2_sbd *sdp);
 int gfs2_quota_refresh(struct gfs2_sbd *sdp, int user, uint32_t id);
-int gfs2_quota_read(struct gfs2_sbd *sdp, int user, uint32_t id,
-		    struct gfs2_quota *q);
 
 int gfs2_quota_init(struct gfs2_sbd *sdp);
 void gfs2_quota_scan(struct gfs2_sbd *sdp);
diff --git a/fs/gfs2/super.c b/fs/gfs2/super.c
index f0dbd2d..75a8def 100644
--- a/fs/gfs2/super.c
+++ b/fs/gfs2/super.c
@@ -264,11 +264,6 @@
 	return 0;
 }
 
-int gfs2_do_upgrade(struct gfs2_sbd *sdp, struct gfs2_glock *sb_gl)
-{
-	return 0;
-}
-
 /**
  * gfs2_jindex_hold - Grab a lock on the jindex
  * @sdp: The GFS2 superblock
@@ -837,7 +832,8 @@
  * Returns: errno
  */
 
-int gfs2_lock_fs_check_clean(struct gfs2_sbd *sdp, struct gfs2_holder *t_gh)
+static int gfs2_lock_fs_check_clean(struct gfs2_sbd *sdp,
+				    struct gfs2_holder *t_gh)
 {
 	struct gfs2_inode *ip;
 	struct gfs2_holder ji_gh;
diff --git a/fs/gfs2/super.h b/fs/gfs2/super.h
index 6abb7b5..175afdd 100644
--- a/fs/gfs2/super.h
+++ b/fs/gfs2/super.h
@@ -14,7 +14,6 @@
 
 int gfs2_check_sb(struct gfs2_sbd *sdp, struct gfs2_sb *sb, int silent);
 int gfs2_read_sb(struct gfs2_sbd *sdp, struct gfs2_glock *gl, int silent);
-int gfs2_do_upgrade(struct gfs2_sbd *sdp, struct gfs2_glock *gl_sb);
 
 static inline unsigned int gfs2_jindex_size(struct gfs2_sbd *sdp)
 {
@@ -46,7 +45,6 @@
 int gfs2_statfs_i(struct gfs2_sbd *sdp, struct gfs2_statfs_change *sc);
 int gfs2_statfs_slow(struct gfs2_sbd *sdp, struct gfs2_statfs_change *sc);
 
-int gfs2_lock_fs_check_clean(struct gfs2_sbd *sdp, struct gfs2_holder *t_gh);
 int gfs2_freeze_fs(struct gfs2_sbd *sdp);
 void gfs2_unfreeze_fs(struct gfs2_sbd *sdp);
 
