diff options
author | Matthew Ahrens <[email protected]> | 2018-10-08 21:57:02 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2018-10-08 21:57:02 -0700 |
commit | 4cbde2ecbf7c6478bac106fadd6a23f53d538262 (patch) | |
tree | 7589858c7148f5d4c3eea51931457903814c32e1 /module | |
parent | dfbe26750308d757d20af8eb5aefef49ec65d4a8 (diff) |
Create /proc/sys/kernel/spl/gitrev with git hash
The existing mechanisms for determining what code is running in the
kernel do not always correctly report the git hash. The versions
reported there do not reflect changes made since `configure` was run
(i.e. incremental builds do not update the version) and they are
misleading if git tags are not set up properly. This applies to
`modinfo zfs`, `dmesg`, and `/sys/module/zfs/version`.
There are complicated requirements on how the existing version is
generated. Therefore we are leaving that alone, and adding a new
mechanism to record and retrieve the git hash:
`cat /proc/sys/kernel/spl/gitrev`
The gitrev is re-generated at compile time, when running `make`
(including for incremental builds). The value is the output of `git
describe` (or "unknown" if not in a git repo or there are uncommitted
changes).
We're also removing /proc/sys/kernel/spl/version, which was never very
useful.
Reviewed by: Pavel Zakharov <[email protected]>
Reviewed by: Brian Behlendorf <[email protected]>
Reviewed by: Tim Chase <[email protected]>
Signed-off-by: Matthew Ahrens <[email protected]>
Closes #7931
Closes #7965
Diffstat (limited to 'module')
-rw-r--r-- | module/spl/spl-generic.c | 4 | ||||
-rw-r--r-- | module/spl/spl-proc.c | 6 | ||||
-rw-r--r-- | module/zfs/spa_history.c | 5 |
3 files changed, 8 insertions, 7 deletions
diff --git a/module/spl/spl-generic.c b/module/spl/spl-generic.c index 7c1ad390b..a22e93e36 100644 --- a/module/spl/spl-generic.c +++ b/module/spl/spl-generic.c @@ -45,9 +45,9 @@ #include <sys/random.h> #include <sys/strings.h> #include <linux/kmod.h> +#include "zfs_gitrev.h" -char spl_version[32] = "SPL v" ZFS_META_VERSION "-" ZFS_META_RELEASE; -EXPORT_SYMBOL(spl_version); +char spl_gitrev[64] = ZFS_META_GITREV; /* BEGIN CSTYLED */ unsigned long spl_hostid = 0; diff --git a/module/spl/spl-proc.c b/module/spl/spl-proc.c index 9c52924a4..a75bcc214 100644 --- a/module/spl/spl-proc.c +++ b/module/spl/spl-proc.c @@ -659,9 +659,9 @@ static struct ctl_table spl_table[] = { * sysctl(8) prefers to go via /proc for portability. */ { - .procname = "version", - .data = spl_version, - .maxlen = sizeof (spl_version), + .procname = "gitrev", + .data = spl_gitrev, + .maxlen = sizeof (spl_gitrev), .mode = 0444, .proc_handler = &proc_dostring, }, diff --git a/module/zfs/spa_history.c b/module/zfs/spa_history.c index 969fdb000..b590a1d57 100644 --- a/module/zfs/spa_history.c +++ b/module/zfs/spa_history.c @@ -38,6 +38,7 @@ #include <sys/sunddi.h> #include <sys/cred.h> #include "zfs_comutil.h" +#include "zfs_gitrev.h" #ifdef _KERNEL #include <sys/zone.h> #endif @@ -617,8 +618,8 @@ spa_history_log_version(spa_t *spa, const char *operation, dmu_tx_t *tx) utsname_t *u = utsname(); spa_history_log_internal(spa, operation, tx, - "pool version %llu; software version %llu/%llu; uts %s %s %s %s", - (u_longlong_t)spa_version(spa), SPA_VERSION, ZPL_VERSION, + "pool version %llu; software version %s; uts %s %s %s %s", + (u_longlong_t)spa_version(spa), ZFS_META_GITREV, u->nodename, u->release, u->version, u->machine); } |