Make spa_history_zone platform-dependent in kernel

This function should only return "linux" on Linux.

Move the kernel part of the function out of common code.
Fix the tests for FreeBSD.

Reviewed-by: George Melikov <mail@gmelikov.ru>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
Closes #10079
This commit is contained in:
Ryan Moeller 2020-03-02 12:43:30 -05:00 committed by GitHub
parent 1289fbb557
commit 9bb907bc3f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 21 additions and 15 deletions

View File

@ -447,6 +447,7 @@ extern void spa_event_post(sysevent_t *ev);
extern int param_set_deadman_failmode_common(const char *val);
extern void spa_set_deadman_synctime(hrtime_t ns);
extern void spa_set_deadman_ziotime(hrtime_t ns);
extern const char *spa_history_zone(void);
#ifdef __cplusplus
}

View File

@ -102,3 +102,9 @@ param_set_slop_shift(const char *buf, zfs_kernel_param_t *kp)
return (0);
}
const char *
spa_history_zone(void)
{
return ("linux");
}

View File

@ -180,16 +180,6 @@ spa_history_write(spa_t *spa, void *buf, uint64_t len, spa_history_phys_t *shpp,
return (0);
}
static char *
spa_history_zone(void)
{
#ifdef _KERNEL
return ("linux");
#else
return (NULL);
#endif
}
/*
* Post a history sysevent.
*
@ -622,6 +612,14 @@ spa_history_log_version(spa_t *spa, const char *operation, dmu_tx_t *tx)
u->nodename, u->release, u->version, u->machine);
}
#ifndef _KERNEL
const char *
spa_history_zone(void)
{
return (NULL);
}
#endif
#if defined(_KERNEL)
EXPORT_SYMBOL(spa_history_create_obj);
EXPORT_SYMBOL(spa_history_get);

View File

@ -51,11 +51,11 @@ function run_and_verify
fullcmd="$1"
flags="$2"
if is_linux; then
if is_illumos; then
histcmd=$(echo $fullcmd | sed 's/\/usr\/sbin\///g')
else
histcmd=$(echo $fullcmd | sed 's/^.*\/\(zpool .*\).*$/\1/')
histcmd=$(echo $histcmd | sed 's/^.*\/\(zfs .*\).*$/\1/')
else
histcmd=$(echo $fullcmd | sed 's/\/usr\/sbin\///g')
fi
cmd=$(echo $histcmd | awk '{print $1}')
@ -112,10 +112,11 @@ function verify_long
typeset suffix=""
if is_linux; then
suffix=":linux"
elif is_freebsd; then
suffix=":freebsd"
fi
grep "$cmd \[user $uid ($user) on $hname$suffix\]" \
$NEW_HISTORY >/dev/null 2>&1
grep -q "$cmd \[user $uid ($user) on $hname$suffix\]" $NEW_HISTORY
if [[ $? != 0 ]]; then
log_note "Couldn't find long information for \"$cmd\""
return 1