summaryrefslogtreecommitdiffstats
path: root/module
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2010-08-26 10:58:00 -0700
committerBrian Behlendorf <[email protected]>2010-08-31 08:38:48 -0700
commitbf701a83c5ec192be6d3afe87ebeee45ce9127f4 (patch)
tree84b1c9b02f92be72eaf8687f55dfa640431a1286 /module
parent161ce7ce3cfc7ec1cd3c93d27f25a94b7408588f (diff)
Fix stack inline
Decrease stack usage for various call paths by forcing certain functions to be inlined. By inlining the functions the overhead of a new stack frame is removed at the cost of increased code size. Signed-off-by: Brian Behlendorf <[email protected]>
Diffstat (limited to 'module')
-rw-r--r--module/zfs/dbuf.c3
-rw-r--r--module/zfs/spa.c5
-rw-r--r--module/zfs/zio.c3
3 files changed, 7 insertions, 4 deletions
diff --git a/module/zfs/dbuf.c b/module/zfs/dbuf.c
index ccab0bce4..add2bc36d 100644
--- a/module/zfs/dbuf.c
+++ b/module/zfs/dbuf.c
@@ -1607,7 +1607,8 @@ dbuf_clear(dmu_buf_impl_t *db)
dbuf_rele(parent, db);
}
-static int
+__attribute__((always_inline))
+static inline int
dbuf_findbp(dnode_t *dn, int level, uint64_t blkid, int fail_sparse,
dmu_buf_impl_t **parentp, blkptr_t **bpp, struct dbuf_hold_impl_data *dh)
{
diff --git a/module/zfs/spa.c b/module/zfs/spa.c
index d11f93dbe..606138a3e 100644
--- a/module/zfs/spa.c
+++ b/module/zfs/spa.c
@@ -113,7 +113,7 @@ const zio_taskq_info_t zio_taskqs[ZIO_TYPES][ZIO_TASKQ_TYPES] = {
static dsl_syncfunc_t spa_sync_props;
static boolean_t spa_has_active_shared_spare(spa_t *spa);
-static int spa_load_impl(spa_t *spa, uint64_t, nvlist_t *config,
+static inline int spa_load_impl(spa_t *spa, uint64_t, nvlist_t *config,
spa_load_state_t state, spa_import_type_t type, boolean_t mosconfig,
char **ereport);
static void spa_vdev_resilver_done(spa_t *spa);
@@ -1790,7 +1790,8 @@ spa_load(spa_t *spa, spa_load_state_t state, spa_import_type_t type,
* Load an existing storage pool, using the pool's builtin spa_config as a
* source of configuration information.
*/
-static int
+__attribute__((always_inline))
+static inline int
spa_load_impl(spa_t *spa, uint64_t pool_guid, nvlist_t *config,
spa_load_state_t state, spa_import_type_t type, boolean_t mosconfig,
char **ereport)
diff --git a/module/zfs/zio.c b/module/zfs/zio.c
index e434cf01a..f0f0cff6b 100644
--- a/module/zfs/zio.c
+++ b/module/zfs/zio.c
@@ -436,7 +436,8 @@ zio_wait_for_children(zio_t *zio, enum zio_child child, enum zio_wait_type wait)
return (waiting);
}
-static void
+__attribute__((always_inline))
+static inline void
zio_notify_parent(zio_t *pio, zio_t *zio, enum zio_wait_type wait)
{
uint64_t *countp = &pio->io_children[zio->io_child_type][wait];