X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=module%2Fzfs%2Fdmu_traverse.c;h=376f60f828b6cca1eeb2e91abc1cc3d2eb766676;hb=04f9432d3bcb15ff8ed6ddc2dc377a4c0264340d;hp=fb102c6cadd5962ca673336f780c54871da107de;hpb=47050a88ac1445f3557030d0d7e61b8a397a5476;p=zfs.git diff --git a/module/zfs/dmu_traverse.c b/module/zfs/dmu_traverse.c index fb102c6..376f60f 100644 --- a/module/zfs/dmu_traverse.c +++ b/module/zfs/dmu_traverse.c @@ -361,9 +361,9 @@ traverse_impl(spa_t *spa, dsl_dataset_t *ds, blkptr_t *rootbp, zbookmark_t *czb; int err; - td = kmem_alloc(sizeof(traverse_data_t), KM_SLEEP); - pd = kmem_zalloc(sizeof(prefetch_data_t), KM_SLEEP); - czb = kmem_alloc(sizeof(zbookmark_t), KM_SLEEP); + td = kmem_alloc(sizeof(traverse_data_t), KM_PUSHPAGE); + pd = kmem_zalloc(sizeof(prefetch_data_t), KM_PUSHPAGE); + czb = kmem_alloc(sizeof(zbookmark_t), KM_PUSHPAGE); td->td_spa = spa; td->td_objset = ds ? ds->ds_object : 0; @@ -488,3 +488,11 @@ traverse_pool(spa_t *spa, uint64_t txg_start, int flags, err = 0; return (err != 0 ? err : lasterr); } + +#if defined(_KERNEL) && defined(HAVE_SPL) +EXPORT_SYMBOL(traverse_dataset); +EXPORT_SYMBOL(traverse_pool); + +module_param(zfs_pd_blks_max, int, 0644); +MODULE_PARM_DESC(zfs_pd_blks_max, "Max number of blocks to prefetch"); +#endif