linux-ext4.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Eric Sandeen <sandeen@redhat.com>
To: "Theodore Ts'o" <tytso@mit.edu>
Cc: Ext4 Developers List <linux-ext4@vger.kernel.org>
Subject: Re: [PATCH 1/2] ext4: use module parameters instead of debugfs for mballoc_debug
Date: Mon, 11 Feb 2013 09:36:48 -0600	[thread overview]
Message-ID: <51191010.50402@redhat.com> (raw)
In-Reply-To: <1360460534-818-1-git-send-email-tytso@mit.edu>

On 2/9/13 7:42 PM, Theodore Ts'o wrote:
> There are multiple reasons to move away from debugfs.  First of all,
> we are only using it for a single parameter, and it is much more
> complicated to set up (some 30 lines of code compared to 3), and one
> more thing that might fail while loading the ext4 module.
> 
> Secondly, as a module paramter it can be specified as a boot option if
> ext4 is built into the kernel, or as a parameter when the module is
> loaded, and it can also be manipulated dynamically under
> /sys/module/ext4/parameters/mballoc_debug.  So it is more flexible.
> 
> Ultimately we want to move away from using mb_debug() towards
> tracepoints, but for now this is still a useful simplification of the
> code base.
> 
> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>

Good idea.

My only suggestion would be to add parameter information to the descriptions -
default value and permissible value range?  I guess nothing enforces that
like for proc entries, right?

 "Debugging level for ext4's mballoc: 0/1 (default 0)"

(hm, we never pass anything but "1" o_O)

It doesn't seem like the values need sanity checking at module load time,
but maybe it'd be worth it just out of paranoia.

Updating Documentation/filesystems/ext4.txt would be good too.

Thanks,
-Eric

-Eric

> ---
>  fs/ext4/mballoc.c | 47 +++++++++--------------------------------------
>  fs/ext4/mballoc.h |  4 ++--
>  2 files changed, 11 insertions(+), 40 deletions(-)
> 
> diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
> index e350885..6540ebe 100644
> --- a/fs/ext4/mballoc.c
> +++ b/fs/ext4/mballoc.c
> @@ -23,11 +23,18 @@
>  
>  #include "ext4_jbd2.h"
>  #include "mballoc.h"
> -#include <linux/debugfs.h>
>  #include <linux/log2.h>
> +#include <linux/module.h>
>  #include <linux/slab.h>
>  #include <trace/events/ext4.h>
>  
> +#ifdef CONFIG_EXT4_DEBUG
> +ushort ext4_mballoc_debug __read_mostly;
> +
> +module_param_named(mballoc_debug, ext4_mballoc_debug, ushort, 0644);
> +MODULE_PARM_DESC(mballoc_debug, "Debugging level for ext4's mballoc");
> +#endif
> +
>  /*
>   * MUSTDO:
>   *   - test ext4_ext_search_left() and ext4_ext_search_right()
> @@ -2660,40 +2667,6 @@ static void ext4_free_data_callback(struct super_block *sb,
>  	mb_debug(1, "freed %u blocks in %u structures\n", count, count2);
>  }
>  
> -#ifdef CONFIG_EXT4_DEBUG
> -u8 mb_enable_debug __read_mostly;
> -
> -static struct dentry *debugfs_dir;
> -static struct dentry *debugfs_debug;
> -
> -static void __init ext4_create_debugfs_entry(void)
> -{
> -	debugfs_dir = debugfs_create_dir("ext4", NULL);
> -	if (debugfs_dir)
> -		debugfs_debug = debugfs_create_u8("mballoc-debug",
> -						  S_IRUGO | S_IWUSR,
> -						  debugfs_dir,
> -						  &mb_enable_debug);
> -}
> -
> -static void ext4_remove_debugfs_entry(void)
> -{
> -	debugfs_remove(debugfs_debug);
> -	debugfs_remove(debugfs_dir);
> -}
> -
> -#else
> -
> -static void __init ext4_create_debugfs_entry(void)
> -{
> -}
> -
> -static void ext4_remove_debugfs_entry(void)
> -{
> -}
> -
> -#endif
> -
>  int __init ext4_init_mballoc(void)
>  {
>  	ext4_pspace_cachep = KMEM_CACHE(ext4_prealloc_space,
> @@ -2715,7 +2688,6 @@ int __init ext4_init_mballoc(void)
>  		kmem_cache_destroy(ext4_ac_cachep);
>  		return -ENOMEM;
>  	}
> -	ext4_create_debugfs_entry();
>  	return 0;
>  }
>  
> @@ -2730,7 +2702,6 @@ void ext4_exit_mballoc(void)
>  	kmem_cache_destroy(ext4_ac_cachep);
>  	kmem_cache_destroy(ext4_free_data_cachep);
>  	ext4_groupinfo_destroy_slabs();
> -	ext4_remove_debugfs_entry();
>  }
>  
>  
> @@ -3876,7 +3847,7 @@ static void ext4_mb_show_ac(struct ext4_allocation_context *ac)
>  	struct super_block *sb = ac->ac_sb;
>  	ext4_group_t ngroups, i;
>  
> -	if (!mb_enable_debug ||
> +	if (!ext4_mballoc_debug ||
>  	    (EXT4_SB(sb)->s_mount_flags & EXT4_MF_FS_ABORTED))
>  		return;
>  
> diff --git a/fs/ext4/mballoc.h b/fs/ext4/mballoc.h
> index 3ccd889..08481ee 100644
> --- a/fs/ext4/mballoc.h
> +++ b/fs/ext4/mballoc.h
> @@ -37,11 +37,11 @@
>  /*
>   */
>  #ifdef CONFIG_EXT4_DEBUG
> -extern u8 mb_enable_debug;
> +extern ushort ext4_mballoc_debug;
>  
>  #define mb_debug(n, fmt, a...)	                                        \
>  	do {								\
> -		if ((n) <= mb_enable_debug) {		        	\
> +		if ((n) <= ext4_mballoc_debug) {		        \
>  			printk(KERN_DEBUG "(%s, %d): %s: ",		\
>  			       __FILE__, __LINE__, __func__);		\
>  			printk(fmt, ## a);				\
> 


  parent reply	other threads:[~2013-02-11 15:36 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-10  1:42 [PATCH 1/2] ext4: use module parameters instead of debugfs for mballoc_debug Theodore Ts'o
2013-02-10  1:42 ` [PATCH 2/2] jbd2: use module parameters instead of debugfs for jbd_debug Theodore Ts'o
2013-02-11 15:36 ` Eric Sandeen [this message]
2013-02-11 15:48   ` [PATCH 1/2] ext4: use module parameters instead of debugfs for mballoc_debug Eric Sandeen
2013-02-11 15:54     ` Theodore Ts'o
2013-02-11 16:04       ` Eric Sandeen
2013-02-11 23:14       ` Dave Chinner

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=51191010.50402@redhat.com \
    --to=sandeen@redhat.com \
    --cc=linux-ext4@vger.kernel.org \
    --cc=tytso@mit.edu \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).