From: Edward Shishkin <edward.shishkin@gmail.com>
To: akpm@linux-foundation.org,
ReiserFS Development List <reiserfs-devel@vger.kernel.org>
Subject: [patch 4/4] reiser4: reduce frame size of reiser4_init_super_data
Date: Mon, 05 Oct 2009 02:40:28 +0200 [thread overview]
Message-ID: <4AC9407C.2050105@gmail.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 1 bytes --]
[-- Attachment #2: reiser4-reduce-frame-size.patch --]
[-- Type: text/plain, Size: 5784 bytes --]
Address a gcc warning for x86_64 about large frame size.
Add a new function push_sb_field_opts().
Signed-off-by Edward Shsihkin <edward.shishkin@gmail.com>
---
fs/reiser4/init_super.c | 126 +++++++++++++++++++++++++-----------------------
1 file changed, 66 insertions(+), 60 deletions(-)
--- mmotm.orig/fs/reiser4/init_super.c
+++ mmotm/fs/reiser4/init_super.c
@@ -292,66 +292,6 @@ static int parse_options(char *opt_strin
#define MAX_NR_OPTIONS (30)
-/**
- * reiser4_init_super_data - initialize reiser4 private super block
- * @super: super block to initialize
- * @opt_string: list of reiser4 mount options
- *
- * Sets various reiser4 parameters to default values. Parses mount options and
- * overwrites default settings.
- */
-int reiser4_init_super_data(struct super_block *super, char *opt_string)
-{
- int result;
- struct opt_desc *opts, *p;
- reiser4_super_info_data *sbinfo = get_super_private(super);
-
- /* initialize super, export, dentry operations */
- sbinfo->ops.super = reiser4_super_operations;
- sbinfo->ops.export = reiser4_export_operations;
- sbinfo->ops.dentry = reiser4_dentry_operations;
- super->s_op = &sbinfo->ops.super;
- super->s_export_op = &sbinfo->ops.export;
-
- /* initialize transaction manager parameters to default values */
- sbinfo->tmgr.atom_max_size = totalram_pages / 4;
- sbinfo->tmgr.atom_max_age = REISER4_ATOM_MAX_AGE / HZ;
- sbinfo->tmgr.atom_min_size = 256;
- sbinfo->tmgr.atom_max_flushers = ATOM_MAX_FLUSHERS;
-
- /* initialize cbk cache parameter */
- sbinfo->tree.cbk_cache.nr_slots = CBK_CACHE_SLOTS;
-
- /* initialize flush parameters */
- sbinfo->flush.relocate_threshold = FLUSH_RELOCATE_THRESHOLD;
- sbinfo->flush.relocate_distance = FLUSH_RELOCATE_DISTANCE;
- sbinfo->flush.written_threshold = FLUSH_WRITTEN_THRESHOLD;
- sbinfo->flush.scan_maxnodes = FLUSH_SCAN_MAXNODES;
-
- sbinfo->optimal_io_size = REISER4_OPTIMAL_IO_SIZE;
-
- /* preliminary tree initializations */
- sbinfo->tree.super = super;
- sbinfo->tree.carry.new_node_flags = REISER4_NEW_NODE_FLAGS;
- sbinfo->tree.carry.new_extent_flags = REISER4_NEW_EXTENT_FLAGS;
- sbinfo->tree.carry.paste_flags = REISER4_PASTE_FLAGS;
- sbinfo->tree.carry.insert_flags = REISER4_INSERT_FLAGS;
- rwlock_init(&(sbinfo->tree.tree_lock));
- spin_lock_init(&(sbinfo->tree.epoch_lock));
-
- /* initialize default readahead params */
- sbinfo->ra_params.max = num_physpages / 4;
- sbinfo->ra_params.flags = 0;
-
- /* allocate memory for structure describing reiser4 mount options */
- opts = kmalloc(sizeof(struct opt_desc) * MAX_NR_OPTIONS,
- reiser4_ctx_gfp_mask_get());
- if (opts == NULL)
- return RETERR(-ENOMEM);
-
- /* initialize structure describing reiser4 mount options */
- p = opts;
-
#if REISER4_DEBUG
# define OPT_ARRAY_CHECK if ((p) > (opts) + MAX_NR_OPTIONS) { \
warning("zam-1046", "opt array is overloaded"); break; \
@@ -370,6 +310,10 @@ do { \
#define PUSH_SB_FIELD_OPT(field, format) PUSH_OPT(SB_FIELD_OPT(field, format))
#define PUSH_BIT_OPT(name, bit) PUSH_OPT(BIT_OPT(name, bit))
+static noinline void push_sb_field_opts(struct opt_desc *p,
+ struct opt_desc *opts,
+ reiser4_super_info_data *sbinfo)
+{
/*
* tmgr.atom_max_size=N
* Atoms containing more than N blocks will be forced to commit. N is
@@ -435,7 +379,69 @@ do { \
*/
PUSH_SB_FIELD_OPT(altsuper, "%lu");
#endif
+}
+
+/**
+ * reiser4_init_super_data - initialize reiser4 private super block
+ * @super: super block to initialize
+ * @opt_string: list of reiser4 mount options
+ *
+ * Sets various reiser4 parameters to default values. Parses mount options and
+ * overwrites default settings.
+ */
+int reiser4_init_super_data(struct super_block *super, char *opt_string)
+{
+ int result;
+ struct opt_desc *opts, *p;
+ reiser4_super_info_data *sbinfo = get_super_private(super);
+
+ /* initialize super, export, dentry operations */
+ sbinfo->ops.super = reiser4_super_operations;
+ sbinfo->ops.export = reiser4_export_operations;
+ sbinfo->ops.dentry = reiser4_dentry_operations;
+ super->s_op = &sbinfo->ops.super;
+ super->s_export_op = &sbinfo->ops.export;
+
+ /* initialize transaction manager parameters to default values */
+ sbinfo->tmgr.atom_max_size = totalram_pages / 4;
+ sbinfo->tmgr.atom_max_age = REISER4_ATOM_MAX_AGE / HZ;
+ sbinfo->tmgr.atom_min_size = 256;
+ sbinfo->tmgr.atom_max_flushers = ATOM_MAX_FLUSHERS;
+
+ /* initialize cbk cache parameter */
+ sbinfo->tree.cbk_cache.nr_slots = CBK_CACHE_SLOTS;
+
+ /* initialize flush parameters */
+ sbinfo->flush.relocate_threshold = FLUSH_RELOCATE_THRESHOLD;
+ sbinfo->flush.relocate_distance = FLUSH_RELOCATE_DISTANCE;
+ sbinfo->flush.written_threshold = FLUSH_WRITTEN_THRESHOLD;
+ sbinfo->flush.scan_maxnodes = FLUSH_SCAN_MAXNODES;
+
+ sbinfo->optimal_io_size = REISER4_OPTIMAL_IO_SIZE;
+
+ /* preliminary tree initializations */
+ sbinfo->tree.super = super;
+ sbinfo->tree.carry.new_node_flags = REISER4_NEW_NODE_FLAGS;
+ sbinfo->tree.carry.new_extent_flags = REISER4_NEW_EXTENT_FLAGS;
+ sbinfo->tree.carry.paste_flags = REISER4_PASTE_FLAGS;
+ sbinfo->tree.carry.insert_flags = REISER4_INSERT_FLAGS;
+ rwlock_init(&(sbinfo->tree.tree_lock));
+ spin_lock_init(&(sbinfo->tree.epoch_lock));
+
+ /* initialize default readahead params */
+ sbinfo->ra_params.max = num_physpages / 4;
+ sbinfo->ra_params.flags = 0;
+
+ /* allocate memory for structure describing reiser4 mount options */
+ opts = kmalloc(sizeof(struct opt_desc) * MAX_NR_OPTIONS,
+ reiser4_ctx_gfp_mask_get());
+ if (opts == NULL)
+ return RETERR(-ENOMEM);
+
+ /* initialize structure describing reiser4 mount options */
+ p = opts;
+ push_sb_field_opts(p, opts, sbinfo);
/* turn on BSD-style gid assignment */
PUSH_BIT_OPT("bsdgroups", REISER4_BSD_GID);
/* turn on 32 bit times */
next reply other threads:[~2009-10-05 0:40 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-05 0:40 Edward Shishkin [this message]
2009-10-07 19:45 ` [patch 4/4] reiser4: reduce frame size of reiser4_init_super_data Laurent Riffard
2009-10-07 19:54 ` Laurent Riffard
2009-10-07 20:05 ` [patch] reiser4: reduce frame size of reiser4_init_super_data fixup Edward Shishkin
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=4AC9407C.2050105@gmail.com \
--to=edward.shishkin@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=reiserfs-devel@vger.kernel.org \
/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.