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 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).