diff options
Diffstat (limited to 'module/zfs/spa_misc.c')
-rw-r--r-- | module/zfs/spa_misc.c | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/module/zfs/spa_misc.c b/module/zfs/spa_misc.c index 6f4db76c8..e0edba155 100644 --- a/module/zfs/spa_misc.c +++ b/module/zfs/spa_misc.c @@ -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); |