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:
parent
1289fbb557
commit
9bb907bc3f
|
@ -447,6 +447,7 @@ extern void spa_event_post(sysevent_t *ev);
|
||||||
extern int param_set_deadman_failmode_common(const char *val);
|
extern int param_set_deadman_failmode_common(const char *val);
|
||||||
extern void spa_set_deadman_synctime(hrtime_t ns);
|
extern void spa_set_deadman_synctime(hrtime_t ns);
|
||||||
extern void spa_set_deadman_ziotime(hrtime_t ns);
|
extern void spa_set_deadman_ziotime(hrtime_t ns);
|
||||||
|
extern const char *spa_history_zone(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -102,3 +102,9 @@ param_set_slop_shift(const char *buf, zfs_kernel_param_t *kp)
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *
|
||||||
|
spa_history_zone(void)
|
||||||
|
{
|
||||||
|
return ("linux");
|
||||||
|
}
|
||||||
|
|
|
@ -180,16 +180,6 @@ spa_history_write(spa_t *spa, void *buf, uint64_t len, spa_history_phys_t *shpp,
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
|
||||||
spa_history_zone(void)
|
|
||||||
{
|
|
||||||
#ifdef _KERNEL
|
|
||||||
return ("linux");
|
|
||||||
#else
|
|
||||||
return (NULL);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Post a history sysevent.
|
* 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);
|
u->nodename, u->release, u->version, u->machine);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef _KERNEL
|
||||||
|
const char *
|
||||||
|
spa_history_zone(void)
|
||||||
|
{
|
||||||
|
return (NULL);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(_KERNEL)
|
#if defined(_KERNEL)
|
||||||
EXPORT_SYMBOL(spa_history_create_obj);
|
EXPORT_SYMBOL(spa_history_create_obj);
|
||||||
EXPORT_SYMBOL(spa_history_get);
|
EXPORT_SYMBOL(spa_history_get);
|
||||||
|
|
|
@ -51,11 +51,11 @@ function run_and_verify
|
||||||
fullcmd="$1"
|
fullcmd="$1"
|
||||||
flags="$2"
|
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 $fullcmd | sed 's/^.*\/\(zpool .*\).*$/\1/')
|
||||||
histcmd=$(echo $histcmd | sed 's/^.*\/\(zfs .*\).*$/\1/')
|
histcmd=$(echo $histcmd | sed 's/^.*\/\(zfs .*\).*$/\1/')
|
||||||
else
|
|
||||||
histcmd=$(echo $fullcmd | sed 's/\/usr\/sbin\///g')
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cmd=$(echo $histcmd | awk '{print $1}')
|
cmd=$(echo $histcmd | awk '{print $1}')
|
||||||
|
@ -112,10 +112,11 @@ function verify_long
|
||||||
typeset suffix=""
|
typeset suffix=""
|
||||||
if is_linux; then
|
if is_linux; then
|
||||||
suffix=":linux"
|
suffix=":linux"
|
||||||
|
elif is_freebsd; then
|
||||||
|
suffix=":freebsd"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
grep "$cmd \[user $uid ($user) on $hname$suffix\]" \
|
grep -q "$cmd \[user $uid ($user) on $hname$suffix\]" $NEW_HISTORY
|
||||||
$NEW_HISTORY >/dev/null 2>&1
|
|
||||||
if [[ $? != 0 ]]; then
|
if [[ $? != 0 ]]; then
|
||||||
log_note "Couldn't find long information for \"$cmd\""
|
log_note "Couldn't find long information for \"$cmd\""
|
||||||
return 1
|
return 1
|
||||||
|
|
Loading…
Reference in New Issue