Skip to contentSkip to conversation

fs/jbd/: possible cleanups

PATCH In review Adrian Bunk 3 participants 4 messages Apr 22, 2005 – Apr 30, 2005

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 fs/jbd/: possible cleanups

This patch contains the following possible cleanups:
- make needlessly global functions static
- #if 0 the following unused global functions:
- journal.c: __journal_internal_check
- journal.c: journal_ack_err
- remove the following write-only global variable:
- journal.c: current_journal
- remove the following unneeded EXPORT_SYMBOL's:
- journal.c: journal_check_used_features
- journal.c: journal_recover
- journal.c: journal_ack_err

Please check which of these changes do make sense.

---

 fs/jbd/journal.c    |   28 ++++++++++++++--------------
 fs/jbd/revoke.c     |    3 ++-
 include/linux/jbd.h |    4 ----
 3 files changed, 16 insertions(+), 19 deletions(-)
include/linux/jbd.h renamed from include/linux/jbd.h.old +0 -4
@@ -900,8 +900,6 @@
 				int start, int len, int bsize);
 extern journal_t * journal_init_inode (struct inode *);
 extern int	   journal_update_format (journal_t *);
-extern int	   journal_check_used_features 
-		   (journal_t *, unsigned long, unsigned long, unsigned long);
 extern int	   journal_check_available_features 
 		   (journal_t *, unsigned long, unsigned long, unsigned long);
 extern int	   journal_set_features 
@@ -914,10 +912,8 @@
 extern int	   journal_skip_recovery	(journal_t *);
 extern void	   journal_update_superblock	(journal_t *, int);
 extern void	   __journal_abort_hard	(journal_t *);
-extern void	   __journal_abort_soft	(journal_t *, int);
 extern void	   journal_abort      (journal_t *, int);
 extern int	   journal_errno      (journal_t *);
-extern void	   journal_ack_err    (journal_t *);
 extern int	   journal_clear_err  (journal_t *);
 extern int	   journal_bmap(journal_t *, unsigned long, unsigned long *);
 extern int	   journal_force_commit(journal_t *);
fs/jbd/journal.c renamed from fs/jbd/journal.c.old +14 -14
@@ -59,17 +59,14 @@
 EXPORT_SYMBOL(journal_init_dev);
 EXPORT_SYMBOL(journal_init_inode);
 EXPORT_SYMBOL(journal_update_format);
-EXPORT_SYMBOL(journal_check_used_features);
 EXPORT_SYMBOL(journal_check_available_features);
 EXPORT_SYMBOL(journal_set_features);
 EXPORT_SYMBOL(journal_create);
 EXPORT_SYMBOL(journal_load);
 EXPORT_SYMBOL(journal_destroy);
-EXPORT_SYMBOL(journal_recover);
 EXPORT_SYMBOL(journal_update_superblock);
 EXPORT_SYMBOL(journal_abort);
 EXPORT_SYMBOL(journal_errno);
-EXPORT_SYMBOL(journal_ack_err);
 EXPORT_SYMBOL(journal_clear_err);
 EXPORT_SYMBOL(log_wait_commit);
 EXPORT_SYMBOL(journal_start_commit);
@@ -81,6 +78,7 @@
 EXPORT_SYMBOL(journal_force_commit);
 
 static int journal_convert_superblock_v1(journal_t *, journal_superblock_t *);
+static void __journal_abort_soft (journal_t *journal, int errno);
 
 /*
  * Helper function used to manage commit timeouts
@@ -96,12 +94,14 @@
 /* Static check for data structure consistency.  There's no code
  * invoked --- we'll just get a linker failure if things aren't right.
  */
+#if 0
 void __journal_internal_check(void)
 {
 	extern void journal_bad_superblock_size(void);
 	if (sizeof(struct journal_superblock_s) != 1024)
 		journal_bad_superblock_size();
 }
+#endif  /*  0  */
 
 /*
  * kjournald: The main thread function used to manage a logging device
@@ -119,16 +119,12 @@
  *    known as checkpointing, and this thread is responsible for that job.
  */
 
-journal_t *current_journal;		// AKPM: debug
-
-int kjournald(void *arg)
+static int kjournald(void *arg)
 {
 	journal_t *journal = (journal_t *) arg;
 	transaction_t *transaction;
 	struct timer_list timer;
 
-	current_journal = journal;
-
 	daemonize("kjournald");
 
 	/* Set up an interval timer which can be used to trigger a
@@ -1181,8 +1177,10 @@
  * features.  Return true (non-zero) if it does. 
  **/
 
-int journal_check_used_features (journal_t *journal, unsigned long compat,
-				 unsigned long ro, unsigned long incompat)
+static int journal_check_used_features (journal_t *journal,
+					unsigned long compat,
+					unsigned long ro,
+					unsigned long incompat)
 {
 	journal_superblock_t *sb;
 
@@ -1439,7 +1437,7 @@
  * device this journal is present.
  */
 
-const char *journal_dev_name(journal_t *journal, char *buffer)
+static const char *journal_dev_name(journal_t *journal, char *buffer)
 {
 	struct block_device *bdev;
 
@@ -1485,7 +1483,7 @@
 
 /* Soft abort: record the abort error status in the journal superblock,
  * but don't do any other IO. */
-void __journal_abort_soft (journal_t *journal, int errno)
+static void __journal_abort_soft (journal_t *journal, int errno)
 {
 	if (journal->j_flags & JFS_ABORT)
 		return;
@@ -1601,6 +1599,7 @@
  * An error must be cleared or Acked to take a FS out of readonly
  * mode.
  */
+#if 0
 void journal_ack_err(journal_t *journal)
 {
 	spin_lock(&journal->j_state_lock);
@@ -1608,6 +1607,7 @@
 		journal->j_flags |= JFS_ACK_ERR;
 	spin_unlock(&journal->j_state_lock);
 }
+#endif  /*  0  */
 
 int journal_blocks_per_page(struct inode *inode)
 {
@@ -1888,7 +1888,7 @@
 
 static struct proc_dir_entry *proc_jbd_debug;
 
-int read_jbd_debug(char *page, char **start, off_t off,
+static int read_jbd_debug(char *page, char **start, off_t off,
 			  int count, int *eof, void *data)
 {
 	int ret;
@@ -1898,7 +1898,7 @@
 	return ret;
 }
 
-int write_jbd_debug(struct file *file, const char __user *buffer,
+static int write_jbd_debug(struct file *file, const char __user *buffer,
 			   unsigned long count, void *data)
 {
 	char buf[32];
fs/jbd/revoke.c renamed from fs/jbd/revoke.c.old +2 -1
@@ -116,7 +116,8 @@
 		(block << (hash_shift - 12))) & (table->hash_size - 1);
 }
 
-int insert_revoke_hash(journal_t *journal, unsigned long blocknr, tid_t seq)
+static int insert_revoke_hash(journal_t *journal, unsigned long blocknr,
+			      tid_t seq)
 {
 	struct list_head *hash_list;
 	struct jbd_revoke_record_s *record;
#1 lore raw
Quoted 11 lines · Adrian Bunk

This patch contains the following possible cleanups:
- make needlessly global functions static
- #if 0 the following unused global functions:
- journal.c: __journal_internal_check
- journal.c: journal_ack_err
- remove the following write-only global variable:
- journal.c: current_journal
- remove the following unneeded EXPORT_SYMBOL's:
- journal.c: journal_check_used_features
- journal.c: journal_recover
- journal.c: journal_ack_err

Well, OCFS2 uses journal_ack_err, so it'd be nice to not remove that :) Thanks,

	--Mark
Quoted 175 lines

Please check which of these changes do make sense.

---

 fs/jbd/journal.c    |   28 ++++++++++++++--------------
 fs/jbd/revoke.c     |    3 ++-
 include/linux/jbd.h |    4 ----
 3 files changed, 16 insertions(+), 19 deletions(-)
include/linux/jbd.h renamed from include/linux/jbd.h.old +0 -4
@@ -900,8 +900,6 @@
 				int start, int len, int bsize);
 extern journal_t * journal_init_inode (struct inode *);
 extern int	   journal_update_format (journal_t *);
-extern int	   journal_check_used_features 
-		   (journal_t *, unsigned long, unsigned long, unsigned long);
 extern int	   journal_check_available_features 
 		   (journal_t *, unsigned long, unsigned long, unsigned long);
 extern int	   journal_set_features 
@@ -914,10 +912,8 @@
 extern int	   journal_skip_recovery	(journal_t *);
 extern void	   journal_update_superblock	(journal_t *, int);
 extern void	   __journal_abort_hard	(journal_t *);
-extern void	   __journal_abort_soft	(journal_t *, int);
 extern void	   journal_abort      (journal_t *, int);
 extern int	   journal_errno      (journal_t *);
-extern void	   journal_ack_err    (journal_t *);
 extern int	   journal_clear_err  (journal_t *);
 extern int	   journal_bmap(journal_t *, unsigned long, unsigned long *);
 extern int	   journal_force_commit(journal_t *);
fs/jbd/journal.c renamed from fs/jbd/journal.c.old +14 -14
@@ -59,17 +59,14 @@
 EXPORT_SYMBOL(journal_init_dev);
 EXPORT_SYMBOL(journal_init_inode);
 EXPORT_SYMBOL(journal_update_format);
-EXPORT_SYMBOL(journal_check_used_features);
 EXPORT_SYMBOL(journal_check_available_features);
 EXPORT_SYMBOL(journal_set_features);
 EXPORT_SYMBOL(journal_create);
 EXPORT_SYMBOL(journal_load);
 EXPORT_SYMBOL(journal_destroy);
-EXPORT_SYMBOL(journal_recover);
 EXPORT_SYMBOL(journal_update_superblock);
 EXPORT_SYMBOL(journal_abort);
 EXPORT_SYMBOL(journal_errno);
-EXPORT_SYMBOL(journal_ack_err);
 EXPORT_SYMBOL(journal_clear_err);
 EXPORT_SYMBOL(log_wait_commit);
 EXPORT_SYMBOL(journal_start_commit);
@@ -81,6 +78,7 @@
 EXPORT_SYMBOL(journal_force_commit);
 
 static int journal_convert_superblock_v1(journal_t *, journal_superblock_t *);
+static void __journal_abort_soft (journal_t *journal, int errno);
 
 /*
  * Helper function used to manage commit timeouts
@@ -96,12 +94,14 @@
 /* Static check for data structure consistency.  There's no code
  * invoked --- we'll just get a linker failure if things aren't right.
  */
+#if 0
 void __journal_internal_check(void)
 {
 	extern void journal_bad_superblock_size(void);
 	if (sizeof(struct journal_superblock_s) != 1024)
 		journal_bad_superblock_size();
 }
+#endif  /*  0  */
 
 /*
  * kjournald: The main thread function used to manage a logging device
@@ -119,16 +119,12 @@
  *    known as checkpointing, and this thread is responsible for that job.
  */
 
-journal_t *current_journal;		// AKPM: debug
-
-int kjournald(void *arg)
+static int kjournald(void *arg)
 {
 	journal_t *journal = (journal_t *) arg;
 	transaction_t *transaction;
 	struct timer_list timer;
 
-	current_journal = journal;
-
 	daemonize("kjournald");
 
 	/* Set up an interval timer which can be used to trigger a
@@ -1181,8 +1177,10 @@
  * features.  Return true (non-zero) if it does. 
  **/
 
-int journal_check_used_features (journal_t *journal, unsigned long compat,
-				 unsigned long ro, unsigned long incompat)
+static int journal_check_used_features (journal_t *journal,
+					unsigned long compat,
+					unsigned long ro,
+					unsigned long incompat)
 {
 	journal_superblock_t *sb;
 
@@ -1439,7 +1437,7 @@
  * device this journal is present.
  */
 
-const char *journal_dev_name(journal_t *journal, char *buffer)
+static const char *journal_dev_name(journal_t *journal, char *buffer)
 {
 	struct block_device *bdev;
 
@@ -1485,7 +1483,7 @@
 
 /* Soft abort: record the abort error status in the journal superblock,
  * but don't do any other IO. */
-void __journal_abort_soft (journal_t *journal, int errno)
+static void __journal_abort_soft (journal_t *journal, int errno)
 {
 	if (journal->j_flags & JFS_ABORT)
 		return;
@@ -1601,6 +1599,7 @@
  * An error must be cleared or Acked to take a FS out of readonly
  * mode.
  */
+#if 0
 void journal_ack_err(journal_t *journal)
 {
 	spin_lock(&journal->j_state_lock);
@@ -1608,6 +1607,7 @@
 		journal->j_flags |= JFS_ACK_ERR;
 	spin_unlock(&journal->j_state_lock);
 }
+#endif  /*  0  */
 
 int journal_blocks_per_page(struct inode *inode)
 {
@@ -1888,7 +1888,7 @@
 
 static struct proc_dir_entry *proc_jbd_debug;
 
-int read_jbd_debug(char *page, char **start, off_t off,
+static int read_jbd_debug(char *page, char **start, off_t off,
 			  int count, int *eof, void *data)
 {
 	int ret;
@@ -1898,7 +1898,7 @@
 	return ret;
 }
 
-int write_jbd_debug(struct file *file, const char __user *buffer,
+static int write_jbd_debug(struct file *file, const char __user *buffer,
 			   unsigned long count, void *data)
 {
 	char buf[32];
fs/jbd/revoke.c renamed from fs/jbd/revoke.c.old +2 -2
@@ -116,7 +116,8 @@
 		(block << (hash_shift - 12))) & (table->hash_size - 1);
 }
 
-int insert_revoke_hash(journal_t *journal, unsigned long blocknr, tid_t seq)
+static int insert_revoke_hash(journal_t *journal, unsigned long blocknr,
+			      tid_t seq)
 {
 	struct list_head *hash_list;
 	struct jbd_revoke_record_s *record;
 
 
-
Quoted 4 lines

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

--
Mark Fasheh
Senior Software Developer, Oracle
[email protected]

#2 lore raw
In reply to Adrian Bunk
Quoted 7 lines · Adrian Bunk

This patch contains the following possible cleanups:
- make needlessly global functions static
- #if 0 the following unused global functions:
- journal.c: __journal_internal_check

/* Static check for data structure consistency. There's no code
* invoked --- we'll just get a linker failure if things aren't right.

The comment above this function specifically says no code is generated here - the purpose of this function is to generate an error if the journal superblock is the wrong size (e.g. someone adds fields without updating the padding).

Quoted 2 lines

- remove the following write-only global variable:
- journal.c: current_journal

Looks to be debugging only, seems OK to remove.

Quoted 1 line

- journal.c: journal_check_used_features

I'm not aware of any current users of journal_check_used_features(), but the complementary function journal_check_available_features() IS used by ext3 and I can imagine that if we ever need to add some more journaling features it would be useful instead of mucking in the journal internals.

Quoted 1 line

- journal.c: journal_recover

Looks like the correct API is actually journal_load() so it seems OK to unexport.

Cheers, Andreas
--
Andreas Dilger
Principal Software Engineer
Cluster File Systems, Inc.

#3 lore raw
Quoted 6 lines · Andreas Dilger
Quoted 4 lines · Adrian Bunk

This patch contains the following possible cleanups:
- make needlessly global functions static
- #if 0 the following unused global functions:
- journal.c: __journal_internal_check

Quoted 7 lines
Quoted 2 lines

/* Static check for data structure consistency. There's no code
* invoked --- we'll just get a linker failure if things aren't right.

The comment above this function specifically says no code is generated here - the purpose of this function is to generate an error if the journal superblock is the wrong size (e.g. someone adds fields without updating the padding).

Ah, that's the part I didn't understand about it.

I still don't like this creating an empty global function.

What about moving it into one of the other functions (e.g. journal_init)?

Quoted 8 lines

...

Quoted 1 line

- journal.c: journal_check_used_features

I'm not aware of any current users of journal_check_used_features(), but the complementary function journal_check_available_features() IS used by ext3 and I can imagine that if we ever need to add some more journaling features it would be useful instead of mucking in the journal internals.
...

My patch changes it from a global EXPORT_SYMBOL'ed function to a static function.

If ext3 will ever require it undoing my change shouldn't be a problem.

Quoted 1 line

Cheers, Andreas

cu
Adrian

Signature · 4 lines
       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed