]> git.proxmox.com Git - mirror_zfs.git/blobdiff - module/zfs/spa_misc.c
OpenZFS 9075 - Improve ZFS pool import/load process and corrupted pool recovery
[mirror_zfs.git] / module / zfs / spa_misc.c
index 6f4db76c80efbeb5a52254507d24e862bbac2553..e0edba1554a69c9e22521ac85af9331917c94e21 100644 (file)
@@ -384,7 +384,8 @@ spa_load_failed(spa_t *spa, const char *fmt, ...)
        (void) vsnprintf(buf, sizeof (buf), fmt, adx);
        va_end(adx);
 
-       zfs_dbgmsg("spa_load(%s): FAILED: %s", spa->spa_name, buf);
+       zfs_dbgmsg("spa_load(%s, config %s): FAILED: %s", spa->spa_name,
+           spa->spa_trust_config ? "trusted" : "untrusted", buf);
 }
 
 /*PRINTFLIKE2*/
@@ -398,7 +399,8 @@ spa_load_note(spa_t *spa, const char *fmt, ...)
        (void) vsnprintf(buf, sizeof (buf), fmt, adx);
        va_end(adx);
 
-       zfs_dbgmsg("spa_load(%s): %s", spa->spa_name, buf);
+       zfs_dbgmsg("spa_load(%s, config %s): %s", spa->spa_name,
+           spa->spa_trust_config ? "trusted" : "untrusted", buf);
 }
 
 /*
@@ -637,6 +639,7 @@ spa_add(const char *name, nvlist_t *config, const char *altroot)
        spa->spa_load_max_txg = UINT64_MAX;
        spa->spa_proc = &p0;
        spa->spa_proc_state = SPA_PROC_NONE;
+       spa->spa_trust_config = B_TRUE;
 
        spa->spa_deadman_synctime = MSEC2NSEC(zfs_deadman_synctime_ms);
        spa->spa_deadman_ziotime = MSEC2NSEC(zfs_deadman_ziotime_ms);
@@ -2052,7 +2055,7 @@ spa_is_root(spa_t *spa)
 boolean_t
 spa_writeable(spa_t *spa)
 {
-       return (!!(spa->spa_mode & FWRITE));
+       return (!!(spa->spa_mode & FWRITE) && spa->spa_trust_config);
 }
 
 /*
@@ -2233,6 +2236,24 @@ spa_get_hostid(void)
        return (myhostid);
 }
 
+boolean_t
+spa_trust_config(spa_t *spa)
+{
+       return (spa->spa_trust_config);
+}
+
+uint64_t
+spa_missing_tvds_allowed(spa_t *spa)
+{
+       return (spa->spa_missing_tvds_allowed);
+}
+
+void
+spa_set_missing_tvds(spa_t *spa, uint64_t missing)
+{
+       spa->spa_missing_tvds = missing;
+}
+
 #if defined(_KERNEL) && defined(HAVE_SPL)
 
 #include <linux/mod_compat.h>
@@ -2338,6 +2359,9 @@ EXPORT_SYMBOL(spa_is_root);
 EXPORT_SYMBOL(spa_writeable);
 EXPORT_SYMBOL(spa_mode);
 EXPORT_SYMBOL(spa_namespace_lock);
+EXPORT_SYMBOL(spa_trust_config);
+EXPORT_SYMBOL(spa_missing_tvds_allowed);
+EXPORT_SYMBOL(spa_set_missing_tvds);
 
 /* BEGIN CSTYLED */
 module_param(zfs_flags, uint, 0644);