Conserve stack in dsl_scan_visitbp()
[zfs.git] / module / zfs / dsl_scan.c
index c37a822..421ddd0 100644 (file)
@@ -211,8 +211,8 @@ dsl_scan_setup_sync(void *arg1, void *arg2, dmu_tx_t *tx)
        /* back to the generic stuff */
 
        if (dp->dp_blkstats == NULL) {
-               dp->dp_blkstats =
-                   kmem_alloc(sizeof (zfs_all_blkstats_t), KM_SLEEP);
+               dp->dp_blkstats = kmem_alloc(sizeof (zfs_all_blkstats_t),
+                   KM_SLEEP | KM_NODEBUG);
        }
        bzero(dp->dp_blkstats, sizeof (zfs_all_blkstats_t));
 
@@ -648,7 +648,7 @@ dsl_scan_check_resume(dsl_scan_t *scn, const dnode_phys_t *dnp,
  * Return nonzero on i/o error.
  * Return new buf to write out in *bufp.
  */
-static int
+__attribute__((always_inline)) static int
 dsl_scan_recurse(dsl_scan_t *scn, dsl_dataset_t *ds, dmu_objset_type_t ostype,
     dnode_phys_t *dnp, const blkptr_t *bp,
     const zbookmark_t *zb, dmu_tx_t *tx, arc_buf_t **bufp)
@@ -754,7 +754,7 @@ dsl_scan_recurse(dsl_scan_t *scn, dsl_dataset_t *ds, dmu_objset_type_t ostype,
        return (0);
 }
 
-static void
+__attribute__((always_inline)) static void
 dsl_scan_visitdnode(dsl_scan_t *scn, dsl_dataset_t *ds,
     dmu_objset_type_t ostype, dnode_phys_t *dnp, arc_buf_t *buf,
     uint64_t object, dmu_tx_t *tx)