From: Nathaniel Clark Date: Wed, 16 Nov 2016 16:52:57 +0000 (-0500) Subject: LU-8816 utils: Check /etc/hostid instead of failing for ZFS X-Git-Tag: 2.9.0-RC1~13 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=13a18655ac57b3f22813be7b44c627a2fb1c2396 LU-8816 utils: Check /etc/hostid instead of failing for ZFS Since ZFS doesn't check /etc/hostid until a pool is created or imported. Check for it's existance instead of just failing after spl_hostid is checked. Test-Parameters: trivial Signed-off-by: Nathaniel Clark Change-Id: Ia00b1e357c629ad6a7a2b636a2fc149036d03546 Reviewed-on: http://review.whamcloud.com/23804 Reviewed-by: Bob Glossman Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Oleg Drokin --- diff --git a/lustre/utils/mount_utils_zfs.c b/lustre/utils/mount_utils_zfs.c index 755c218..cdb45cb 100644 --- a/lustre/utils/mount_utils_zfs.c +++ b/lustre/utils/mount_utils_zfs.c @@ -32,6 +32,8 @@ #include #include +#define HOSTID_PATH "/etc/hostid" + /* Persistent mount data is stored in these user attributes */ #define LDD_PREFIX "lustre:" #define LDD_VERSION_PROP LDD_PREFIX "version" @@ -198,6 +200,23 @@ static int zfs_check_hostid(struct mkfs_opts *mop) return rc; } + if (hostid != 0) + return 0; + + f = fopen(HOSTID_PATH, "r"); + if (f == NULL) + goto out; + + rc = fread(&hostid, sizeof(uint32_t), 1, f); + fclose(f); + + if (rc != 1) { + fprintf(stderr, "Failed to read "HOSTID_PATH": %d\n", + rc); + hostid = 0; + } + +out: if (hostid == 0) { if (mop->mo_flags & MO_NOHOSTID_CHECK) { fprintf(stderr, "WARNING: spl_hostid not set. ZFS has "