mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-25 19:57:43 +03:00
Add linux kernel module support
Setup linux kernel module support, this includes: - zfs context for kernel/user - kernel module build system integration - kernel module macros - kernel module symbol export - kernel module options Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
This commit is contained in:
+64
-2
@@ -40,6 +40,7 @@
|
||||
#include <sys/zil.h>
|
||||
#include <sys/ddt.h>
|
||||
#include <sys/vdev_impl.h>
|
||||
#include <sys/vdev_disk.h>
|
||||
#include <sys/metaslab.h>
|
||||
#include <sys/metaslab_impl.h>
|
||||
#include <sys/uberblock_impl.h>
|
||||
@@ -229,7 +230,9 @@ spa_prop_get(spa_t *spa, nvlist_t **nvp)
|
||||
zap_attribute_t za;
|
||||
int err;
|
||||
|
||||
VERIFY(nvlist_alloc(nvp, NV_UNIQUE_NAME, KM_SLEEP) == 0);
|
||||
err = nvlist_alloc(nvp, NV_UNIQUE_NAME, KM_SLEEP);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
mutex_enter(&spa->spa_props_lock);
|
||||
|
||||
@@ -241,7 +244,7 @@ spa_prop_get(spa_t *spa, nvlist_t **nvp)
|
||||
/* If no pool property object, no more prop to get. */
|
||||
if (mos == NULL || spa->spa_pool_props_object == 0) {
|
||||
mutex_exit(&spa->spa_props_lock);
|
||||
return (0);
|
||||
goto out;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -5858,3 +5861,62 @@ spa_event_notify(spa_t *spa, vdev_t *vd, const char *name)
|
||||
zfs_ereport_post(name, spa, vd, NULL, 0, 0);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(_KERNEL) && defined(HAVE_SPL)
|
||||
/* state manipulation functions */
|
||||
EXPORT_SYMBOL(spa_open);
|
||||
EXPORT_SYMBOL(spa_open_rewind);
|
||||
EXPORT_SYMBOL(spa_get_stats);
|
||||
EXPORT_SYMBOL(spa_create);
|
||||
EXPORT_SYMBOL(spa_import_rootpool);
|
||||
EXPORT_SYMBOL(spa_import);
|
||||
EXPORT_SYMBOL(spa_tryimport);
|
||||
EXPORT_SYMBOL(spa_destroy);
|
||||
EXPORT_SYMBOL(spa_export);
|
||||
EXPORT_SYMBOL(spa_reset);
|
||||
EXPORT_SYMBOL(spa_async_request);
|
||||
EXPORT_SYMBOL(spa_async_suspend);
|
||||
EXPORT_SYMBOL(spa_async_resume);
|
||||
EXPORT_SYMBOL(spa_inject_addref);
|
||||
EXPORT_SYMBOL(spa_inject_delref);
|
||||
EXPORT_SYMBOL(spa_scan_stat_init);
|
||||
EXPORT_SYMBOL(spa_scan_get_stats);
|
||||
|
||||
/* device maniion */
|
||||
EXPORT_SYMBOL(spa_vdev_add);
|
||||
EXPORT_SYMBOL(spa_vdev_attach);
|
||||
EXPORT_SYMBOL(spa_vdev_detach);
|
||||
EXPORT_SYMBOL(spa_vdev_remove);
|
||||
EXPORT_SYMBOL(spa_vdev_setpath);
|
||||
EXPORT_SYMBOL(spa_vdev_setfru);
|
||||
EXPORT_SYMBOL(spa_vdev_split_mirror);
|
||||
|
||||
/* spare statech is global across all pools) */
|
||||
EXPORT_SYMBOL(spa_spare_add);
|
||||
EXPORT_SYMBOL(spa_spare_remove);
|
||||
EXPORT_SYMBOL(spa_spare_exists);
|
||||
EXPORT_SYMBOL(spa_spare_activate);
|
||||
|
||||
/* L2ARC statech is global across all pools) */
|
||||
EXPORT_SYMBOL(spa_l2cache_add);
|
||||
EXPORT_SYMBOL(spa_l2cache_remove);
|
||||
EXPORT_SYMBOL(spa_l2cache_exists);
|
||||
EXPORT_SYMBOL(spa_l2cache_activate);
|
||||
EXPORT_SYMBOL(spa_l2cache_drop);
|
||||
|
||||
/* scanning */
|
||||
EXPORT_SYMBOL(spa_scan);
|
||||
EXPORT_SYMBOL(spa_scan_stop);
|
||||
|
||||
/* spa syncing */
|
||||
EXPORT_SYMBOL(spa_sync); /* only for DMU use */
|
||||
EXPORT_SYMBOL(spa_sync_allpools);
|
||||
|
||||
/* properties */
|
||||
EXPORT_SYMBOL(spa_prop_set);
|
||||
EXPORT_SYMBOL(spa_prop_get);
|
||||
EXPORT_SYMBOL(spa_prop_clear_bootfs);
|
||||
|
||||
/* asynchronous event notification */
|
||||
EXPORT_SYMBOL(spa_event_notify);
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user