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