summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/libspl/include/unistd.h10
-rw-r--r--lib/libzfs/libzfs_status.c3
2 files changed, 2 insertions, 11 deletions
diff --git a/lib/libspl/include/unistd.h b/lib/libspl/include/unistd.h
index 44173d2a4..dc95e28b5 100644
--- a/lib/libspl/include/unistd.h
+++ b/lib/libspl/include/unistd.h
@@ -44,14 +44,4 @@
# define issetugid() (geteuid() == 0 || getegid() == 0)
#endif
-#if !defined(__sun__) && !defined(__sun)
-/* It seems Solaris only returns positive host ids */
-static inline long fake_gethostid(void)
-{
- long id = gethostid();
- return id >= 0 ? id : -id;
-}
-#define gethostid() fake_gethostid()
-#endif
-
#endif /* _LIBSPL_UNISTD_H */
diff --git a/lib/libzfs/libzfs_status.c b/lib/libzfs/libzfs_status.c
index 24725ec04..d56baf0bf 100644
--- a/lib/libzfs/libzfs_status.c
+++ b/lib/libzfs/libzfs_status.c
@@ -179,6 +179,7 @@ check_status(nvlist_t *config, boolean_t isimport)
uint64_t stateval;
uint64_t suspended;
uint64_t hostid = 0;
+ unsigned long system_hostid = gethostid() & 0xffffffff;
verify(nvlist_lookup_uint64(config, ZPOOL_CONFIG_VERSION,
&version) == 0);
@@ -202,7 +203,7 @@ check_status(nvlist_t *config, boolean_t isimport)
* Pool last accessed by another system.
*/
(void) nvlist_lookup_uint64(config, ZPOOL_CONFIG_HOSTID, &hostid);
- if (hostid != 0 && (unsigned long)hostid != gethostid() &&
+ if (hostid != 0 && (unsigned long)hostid != system_hostid &&
stateval == POOL_STATE_ACTIVE)
return (ZPOOL_STATUS_HOSTID_MISMATCH);