]> git.proxmox.com Git - mirror_zfs.git/blobdiff - module/zfs/spa_history.c
Add linux kernel module support
[mirror_zfs.git] / module / zfs / spa_history.c
index a65f16bccddea82e7f56e37d05e27c87f8e87cf3..243f2b4ab370e83ca5bad8d19a6848c5a551b467 100644 (file)
@@ -178,7 +178,11 @@ static char *
 spa_history_zone(void)
 {
 #ifdef _KERNEL
+#ifdef HAVE_SPL
+       return ("linux");
+#else
        return (curproc->p_zone->zone_name);
+#endif
 #else
        return ("global");
 #endif
@@ -428,6 +432,7 @@ log_internal(history_internal_events_t event, spa_t *spa,
     dmu_tx_t *tx, const char *fmt, va_list adx)
 {
        history_arg_t *ha;
+       va_list adx_copy;
 
        /*
         * If this is part of creating a pool, not everything is
@@ -437,11 +442,9 @@ log_internal(history_internal_events_t event, spa_t *spa,
                return;
 
        ha = kmem_alloc(sizeof (history_arg_t), KM_SLEEP);
-       ha->ha_history_str = kmem_alloc(vsnprintf(NULL, 0, fmt, adx) + 1,
-           KM_SLEEP);
-
-       (void) vsprintf(ha->ha_history_str, fmt, adx);
-
+       va_copy(adx_copy, adx);
+       ha->ha_history_str = kmem_vasprintf(fmt, adx_copy);
+       va_end(adx_copy);
        ha->ha_log_type = LOG_INTERNAL;
        ha->ha_event = event;
        ha->ha_zone = NULL;
@@ -500,3 +503,11 @@ spa_history_log_version(spa_t *spa, history_internal_events_t event)
            (u_longlong_t)current_vers, spa_name(spa), SPA_VERSION);
 #endif
 }
+
+#if defined(_KERNEL) && defined(HAVE_SPL)
+EXPORT_SYMBOL(spa_history_create_obj);
+EXPORT_SYMBOL(spa_history_get);
+EXPORT_SYMBOL(spa_history_log);
+EXPORT_SYMBOL(spa_history_log_internal);
+EXPORT_SYMBOL(spa_history_log_version);
+#endif