mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-25 18:59:33 +03:00
Let zpool import
ignore a missing hostid record.
Change the zpool program to skip its hostid mismatch check in the same way that libzfs already does. Invoked imports fail if the ZPOOL_CONFIG_HOSTID nvpair is missing in the /etc/zfs/zpool.cache file, which can happen as of the /etc/hostid deprecation in commit zfsonlinux/spl@acf0ade362. Signed-off-by: Darik Horn <dajhorn@vanadac.com> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #2794
This commit is contained in:
parent
33074f2254
commit
d94fd5f0de
@ -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);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user