diff --git a/cmd/zpool/zpool_main.c b/cmd/zpool/zpool_main.c index ff54db8d2..3b5d2fc42 100644 --- a/cmd/zpool/zpool_main.c +++ b/cmd/zpool/zpool_main.c @@ -1914,37 +1914,30 @@ do_import(nvlist_t *config, const char *newname, const char *mntopts, return (1); } else if (state != POOL_STATE_EXPORTED && !(flags & ZFS_IMPORT_ANY_HOST)) { - uint64_t hostid; + uint64_t hostid = 0; + unsigned long system_hostid = gethostid() & 0xffffffff; - if (nvlist_lookup_uint64(config, ZPOOL_CONFIG_HOSTID, - &hostid) == 0) { - unsigned long system_hostid = gethostid() & 0xffffffff; + (void) nvlist_lookup_uint64(config, ZPOOL_CONFIG_HOSTID, + &hostid); - if ((unsigned long)hostid != system_hostid) { - char *hostname; - uint64_t timestamp; - time_t t; + if (hostid != 0 && (unsigned long)hostid != system_hostid) { + char *hostname; + uint64_t timestamp; + time_t t; - verify(nvlist_lookup_string(config, - ZPOOL_CONFIG_HOSTNAME, &hostname) == 0); - verify(nvlist_lookup_uint64(config, - ZPOOL_CONFIG_TIMESTAMP, ×tamp) == 0); - t = timestamp; - (void) fprintf(stderr, gettext("cannot import " - "'%s': pool may be in use from other " - "system, it was last accessed by %s " - "(hostid: 0x%lx) on %s"), name, hostname, - (unsigned long)hostid, - asctime(localtime(&t))); - (void) fprintf(stderr, gettext("use '-f' to " - "import anyway\n")); - return (1); - } - } else { - (void) fprintf(stderr, gettext("cannot import '%s': " - "pool may be in use from other system\n"), name); - (void) fprintf(stderr, gettext("use '-f' to import " - "anyway\n")); + verify(nvlist_lookup_string(config, + ZPOOL_CONFIG_HOSTNAME, &hostname) == 0); + verify(nvlist_lookup_uint64(config, + ZPOOL_CONFIG_TIMESTAMP, ×tamp) == 0); + t = timestamp; + (void) fprintf(stderr, gettext("cannot import " + "'%s': pool may be in use from other " + "system, it was last accessed by %s " + "(hostid: 0x%lx) on %s"), name, hostname, + (unsigned long)hostid, + asctime(localtime(&t))); + (void) fprintf(stderr, gettext("use '-f' to " + "import anyway\n")); return (1); } }