diff --git a/lib/libzpool/include/sys/zfs_context.h b/lib/libzpool/include/sys/zfs_context.h index 109ad925d7..db93a89b8b 100644 --- a/lib/libzpool/include/sys/zfs_context.h +++ b/lib/libzpool/include/sys/zfs_context.h @@ -76,12 +76,6 @@ extern "C" { #include #include -/* - * Stack - */ - -#define noinline __attribute__((noinline)) - /* * Debugging */ diff --git a/module/zfs/dbuf.c b/module/zfs/dbuf.c index c45bcb399c..d265d6cdf2 100644 --- a/module/zfs/dbuf.c +++ b/module/zfs/dbuf.c @@ -2095,11 +2095,7 @@ dbuf_check_blkptr(dnode_t *dn, dmu_buf_impl_t *db) } } -/* dbuf_sync_indirect() is called recursively from dbuf_sync_list() so it - * is critical the we not allow the compiler to inline this function in to - * dbuf_sync_list() thereby drastically bloating the stack usage. - */ -noinline static void +static void dbuf_sync_indirect(dbuf_dirty_record_t *dr, dmu_tx_t *tx) { dmu_buf_impl_t *db = dr->dr_dbuf; @@ -2139,11 +2135,7 @@ dbuf_sync_indirect(dbuf_dirty_record_t *dr, dmu_tx_t *tx) zio_nowait(zio); } -/* dbuf_sync_leaf() is called recursively from dbuf_sync_list() so it is - * critical the we not allow the compiler to inline this function in to - * dbuf_sync_list() thereby drastically bloating the stack usage. - */ -noinline static void +static void dbuf_sync_leaf(dbuf_dirty_record_t *dr, dmu_tx_t *tx) { arc_buf_t **datap = &dr->dt.dl.dr_data; diff --git a/module/zfs/dmu_objset.c b/module/zfs/dmu_objset.c index 04ac4b07c7..2f82261653 100644 --- a/module/zfs/dmu_objset.c +++ b/module/zfs/dmu_objset.c @@ -879,49 +879,45 @@ dmu_objset_snapshot(char *fsname, char *snapname, nvlist_t *props, boolean_t recursive) { dsl_sync_task_t *dst; - struct snaparg *sn; + struct snaparg sn; spa_t *spa; int err; - sn = kmem_alloc(sizeof (struct snaparg), KM_SLEEP); - (void) strcpy(sn->failed, fsname); + (void) strcpy(sn.failed, fsname); err = spa_open(fsname, &spa, FTAG); - if (err) { - kmem_free(sn, sizeof (struct snaparg)); + if (err) return (err); - } - sn->dstg = dsl_sync_task_group_create(spa_get_dsl(spa)); - sn->snapname = snapname; - sn->props = props; - sn->recursive = recursive; + sn.dstg = dsl_sync_task_group_create(spa_get_dsl(spa)); + sn.snapname = snapname; + sn.props = props; + sn.recursive = recursive; if (recursive) { err = dmu_objset_find(fsname, - dmu_objset_snapshot_one, sn, DS_FIND_CHILDREN); + dmu_objset_snapshot_one, &sn, DS_FIND_CHILDREN); } else { - err = dmu_objset_snapshot_one(fsname, sn); + err = dmu_objset_snapshot_one(fsname, &sn); } if (err == 0) - err = dsl_sync_task_group_wait(sn->dstg); + err = dsl_sync_task_group_wait(sn.dstg); - for (dst = list_head(&sn->dstg->dstg_tasks); dst; - dst = list_next(&sn->dstg->dstg_tasks, dst)) { + for (dst = list_head(&sn.dstg->dstg_tasks); dst; + dst = list_next(&sn.dstg->dstg_tasks, dst)) { objset_t *os = dst->dst_arg1; dsl_dataset_t *ds = os->os_dsl_dataset; if (dst->dst_err) - dsl_dataset_name(ds, sn->failed); + dsl_dataset_name(ds, sn.failed); zil_resume(dmu_objset_zil(os)); dmu_objset_rele(os, &sn); } if (err) - (void) strcpy(fsname, sn->failed); - dsl_sync_task_group_destroy(sn->dstg); + (void) strcpy(fsname, sn.failed); + dsl_sync_task_group_destroy(sn.dstg); spa_close(spa, FTAG); - kmem_free(sn, sizeof (struct snaparg)); return (err); } diff --git a/module/zfs/dmu_send.c b/module/zfs/dmu_send.c index 901c8b4cf3..6f313e6c37 100644 --- a/module/zfs/dmu_send.c +++ b/module/zfs/dmu_send.c @@ -921,7 +921,7 @@ restore_read(struct restorearg *ra, int len) return (rv); } -noinline static void +static void backup_byteswap(dmu_replay_record_t *drr) { #define DO64(X) (drr->drr_u.X = BSWAP_64(drr->drr_u.X)) @@ -1003,7 +1003,7 @@ backup_byteswap(dmu_replay_record_t *drr) #undef DO32 } -noinline static int +static int restore_object(struct restorearg *ra, objset_t *os, struct drr_object *drro) { int err; @@ -1087,7 +1087,7 @@ restore_object(struct restorearg *ra, objset_t *os, struct drr_object *drro) } /* ARGSUSED */ -noinline static int +static int restore_freeobjects(struct restorearg *ra, objset_t *os, struct drr_freeobjects *drrfo) { @@ -1111,7 +1111,7 @@ restore_freeobjects(struct restorearg *ra, objset_t *os, return (0); } -noinline static int +static int restore_write(struct restorearg *ra, objset_t *os, struct drr_write *drrw) { @@ -1257,7 +1257,7 @@ restore_spill(struct restorearg *ra, objset_t *os, struct drr_spill *drrs) } /* ARGSUSED */ -noinline static int +static int restore_free(struct restorearg *ra, objset_t *os, struct drr_free *drrf) {