#!/bin/sh
# SPDX-License-Identifier: GPL-2.0-only
# pstore_post_reboot_tests - Check pstore's behavior after crash/reboot
#
# Copyright (C) Hitachi Ltd., 2015
# Written by Hiraku Toyooka <[email protected]>
#
# Kselftest framework requirement - SKIP code is 4.
ksft_skip=4
. ./common_tests
if [ -e $REBOOT_FLAG ]; then
rm $REBOOT_FLAG
else
prlog "pstore_crash_test has not been executed yet. we skip further tests."
exit $ksft_skip
fi
prlog -n "Mounting pstore filesystem ... "
mount_info=`grep pstore /proc/mounts`
if [ $? -eq 0 ]; then
mount_point=`echo ${mount_info} | cut -d' ' -f2 | head -n1`
prlog "ok"
else
mount none /sys/fs/pstore -t pstore
if [ $? -eq 0 ]; then
mount_point=`grep pstore /proc/mounts | cut -d' ' -f2 | head -n1`
prlog "ok"
else
prlog "FAIL"
exit 1
fi
fi
cd ${mount_point}
prlog -n "Checking dmesg files exist in pstore filesystem ... "
check_files_exist dmesg
prlog -n "Checking console files exist in pstore filesystem ... "
check_files_exist console
prlog -n "Checking pmsg files exist in pstore filesystem ... "
check_files_exist pmsg
prlog -n "Checking dmesg files contain oops end marker"
grep_end_trace() {
grep -q "\---\[ end trace" $1
}
files=`ls dmesg-${backend}-*`
operate_files $? "$files" grep_end_trace
prlog -n "Checking console file contains oops end marker ... "
grep -q "\---\[ end trace" console-${backend}-0
show_result $?
prlog -n "Checking pmsg file properly keeps the content written before crash ... "
prev_uuid=`cat $TOP_DIR/prev_uuid`
if [ $? -eq 0 ]; then
nr_matched=`grep -c "$TEST_STRING_PATTERN" pmsg-${backend}-0`
if [ $nr_matched -eq 1 ]; then
grep -q "$TEST_STRING_PATTERN"$prev_uuid pmsg-${backend}-0
show_result $?
else
prlog "FAIL"
rc=1
fi
else
prlog "FAIL"
rc=1
fi
prlog -n "Removing all files in pstore filesystem "
files=`ls *-${backend}-*`
operate_files $? "$files" rm
exit $rc