Linux 3.6 compat, sops->write_super() removed
[zfs.git] / module / zfs / dmu_traverse.c
index fb102c6..376f60f 100644 (file)
@@ -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