}
}
-/* 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;
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;
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);
}
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))
#undef DO32
}
-noinline static int
+static int
restore_object(struct restorearg *ra, objset_t *os, struct drr_object *drro)
{
int err;
}
/* ARGSUSED */
-noinline static int
+static int
restore_freeobjects(struct restorearg *ra, objset_t *os,
struct drr_freeobjects *drrfo)
{
return (0);
}
-noinline static int
+static int
restore_write(struct restorearg *ra, objset_t *os,
struct drr_write *drrw)
{
}
/* ARGSUSED */
-noinline static int
+static int
restore_free(struct restorearg *ra, objset_t *os,
struct drr_free *drrf)
{