1#!/bin/sh 2# SPDX-License-Identifier: GPL-2.0-only 3 4# pstore_post_reboot_tests - Check pstore's behavior after crash/reboot 5# 6# Copyright (C) Hitachi Ltd., 2015 7# Written by Hiraku Toyooka <hiraku.toyooka.gu@hitachi.com> 8# 9 10# Kselftest framework requirement - SKIP code is 4. 11ksft_skip=4 12 13. ./common_tests 14 15if [ -e $REBOOT_FLAG ]; then 16 rm $REBOOT_FLAG 17else 18 prlog "pstore_crash_test has not been executed yet. we skip further tests." 19 exit $ksft_skip 20fi 21 22prlog -n "Mounting pstore filesystem ... " 23mount_info=`grep pstore /proc/mounts` 24if [ $? -eq 0 ]; then 25 mount_point=`echo ${mount_info} | cut -d' ' -f2 | head -n1` 26 prlog "ok" 27else 28 mount none /sys/fs/pstore -t pstore 29 if [ $? -eq 0 ]; then 30 mount_point=`grep pstore /proc/mounts | cut -d' ' -f2 | head -n1` 31 prlog "ok" 32 else 33 prlog "FAIL" 34 exit 1 35 fi 36fi 37 38cd ${mount_point} 39 40prlog -n "Checking dmesg files exist in pstore filesystem ... " 41check_files_exist dmesg 42 43prlog -n "Checking console files exist in pstore filesystem ... " 44check_files_exist console 45 46prlog -n "Checking pmsg files exist in pstore filesystem ... " 47check_files_exist pmsg 48 49prlog -n "Checking dmesg files contain oops end marker" 50grep_end_trace() { 51 grep -q "\---\[ end trace" $1 52} 53files=`ls dmesg-${backend}-*` 54operate_files $? "$files" grep_end_trace 55 56prlog -n "Checking console file contains oops end marker ... " 57grep -q "\---\[ end trace" console-${backend}-0 58show_result $? 59 60prlog -n "Checking pmsg file properly keeps the content written before crash ... " 61prev_uuid=`cat $TOP_DIR/prev_uuid` 62if [ $? -eq 0 ]; then 63 nr_matched=`grep -c "$TEST_STRING_PATTERN" pmsg-${backend}-0` 64 if [ $nr_matched -eq 1 ]; then 65 grep -q "$TEST_STRING_PATTERN"$prev_uuid pmsg-${backend}-0 66 show_result $? 67 else 68 prlog "FAIL" 69 rc=1 70 fi 71else 72 prlog "FAIL" 73 rc=1 74fi 75 76prlog -n "Removing all files in pstore filesystem " 77files=`ls *-${backend}-*` 78operate_files $? "$files" rm 79 80exit $rc 81