Fix spurious -EFAULT when setting I/O scheduler
[zfs.git] / module / zfs / zap_micro.c
index aa86bde..3c21475 100644 (file)
@@ -532,7 +532,7 @@ mzap_upgrade(zap_t **zapp, dmu_tx_t *tx, zap_flags_t flags)
        ASSERT(RW_WRITE_HELD(&zap->zap_rwlock));
 
        sz = zap->zap_dbuf->db_size;
-       mzp = kmem_alloc(sz, KM_SLEEP);
+       mzp = vmem_alloc(sz, KM_SLEEP);
        bcopy(zap->zap_dbuf->db_data, mzp, sz);
        nchunks = zap->zap_m.zap_num_chunks;
 
@@ -540,7 +540,7 @@ mzap_upgrade(zap_t **zapp, dmu_tx_t *tx, zap_flags_t flags)
                err = dmu_object_set_blocksize(zap->zap_objset, zap->zap_object,
                    1ULL << fzap_default_block_shift, 0, tx);
                if (err) {
-                       kmem_free(mzp, sz);
+                       vmem_free(mzp, sz);
                        return (err);
                }
        }
@@ -566,7 +566,7 @@ mzap_upgrade(zap_t **zapp, dmu_tx_t *tx, zap_flags_t flags)
                if (err)
                        break;
        }
-       kmem_free(mzp, sz);
+       vmem_free(mzp, sz);
        *zapp = zap;
        return (err);
 }
@@ -1454,3 +1454,19 @@ zap_count_write(objset_t *os, uint64_t zapobj, const char *name, int add,
        zap_unlockdir(zap);
        return (err);
 }
+
+#if defined(_KERNEL) && defined(HAVE_SPL)
+EXPORT_SYMBOL(zap_add);
+EXPORT_SYMBOL(zap_create);
+EXPORT_SYMBOL(zap_cursor_advance);
+EXPORT_SYMBOL(zap_cursor_fini);
+EXPORT_SYMBOL(zap_cursor_init);
+EXPORT_SYMBOL(zap_cursor_init_serialized);
+EXPORT_SYMBOL(zap_cursor_move_to_key);
+EXPORT_SYMBOL(zap_cursor_retrieve);
+EXPORT_SYMBOL(zap_cursor_serialize);
+EXPORT_SYMBOL(zap_lookup);
+EXPORT_SYMBOL(zap_lookup_norm);
+EXPORT_SYMBOL(zap_remove);
+EXPORT_SYMBOL(zap_update);
+#endif