From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 61DFCC4167D for ; Thu, 13 Oct 2022 00:24:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230251AbiJMAYY (ORCPT ); Wed, 12 Oct 2022 20:24:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58594 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230339AbiJMAXF (ORCPT ); Wed, 12 Oct 2022 20:23:05 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B28CC2229C; Wed, 12 Oct 2022 17:19:55 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 453C1B81CD1; Thu, 13 Oct 2022 00:19:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id F2FB8C4347C; Thu, 13 Oct 2022 00:19:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1665620391; bh=ul1rlkOk/5QAUNfsHBqlGdHd0ypIn5tckgBaEM4nSfU=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=c3kinwukLzwKsPgJmUUFR5nKCk/f4fBOmggjuxF76j7SHuRRYSFDzguI5tDPIvh1p BWnAk3+5YuDsamBrLVryddkvPYohoxlRD81FjJ0Y/R0jFdqWhvlgPueDH3ZvLwqRtm axG9t8qFpqVxDdGWt8TN6Px2NRT1GnKasH9PDM+ps6Yxk2bW4s0TZ5hcagAw1jjgtl xdP8syN5hni7bKuQv1I3zIJrtz013gko+7PCBSw0xVK1FFspe6bG8go7rvBd2WqfGJ TtCpSKLPsD6OsL4b/mJ1B5wvx3u5vpD+b5FHOXJCzBKKHly0ZHUJoG0rHH7M4iC9kH FE6H2ZzEViqJA== Date: Wed, 12 Oct 2022 17:19:50 -0700 From: "Darrick J. Wong" To: guaneryu@gmail.com, zlang@redhat.com Cc: linux-xfs@vger.kernel.org, fstests@vger.kernel.org, guan@eryu.me Subject: [PATCH v2.1 1/2] check: detect and preserve all coredumps made by a test Message-ID: References: <166553910766.422356.8069826206437666467.stgit@magnolia> <166553911331.422356.4424521847397525024.stgit@magnolia> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <166553911331.422356.4424521847397525024.stgit@magnolia> Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Darrick J. Wong If someone sets kernel.core_uses_pid (or kernel.core_pattern), any coredumps generated by fstests might have names that are longer than just "core". Since the pid isn't all that useful by itself, let's record the coredumps by hash when we save them, so that we don't waste space storing identical crash dumps. Signed-off-by: Darrick J. Wong --- v2.1: use REPORT_DIR per maintainer suggestion --- check | 26 ++++++++++++++++++++++---- common/rc | 16 ++++++++++++++++ 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/check b/check index d587a70546..29303db1c8 100755 --- a/check +++ b/check @@ -923,11 +923,19 @@ function run_section() sts=$? fi - if [ -f core ]; then - _dump_err_cont "[dumped core]" - mv core $RESULT_BASE/$seqnum.core + # If someone sets kernel.core_pattern or kernel.core_uses_pid, + # coredumps generated by fstests might have a longer name than + # just "core". Use globbing to find the most common patterns, + # assuming there are no other coredump capture packages set up. + local cores=0 + for i in core core.*; do + test -f "$i" || continue + if ((cores++ == 0)); then + _dump_err_cont "[dumped core]" + fi + _save_coredump "$i" tc_status="fail" - fi + done if [ -f $seqres.notrun ]; then $timestamp && _timestamp @@ -960,6 +968,16 @@ function run_section() # of the check script itself. (_adjust_oom_score 250; _check_filesystems) || tc_status="fail" _check_dmesg || tc_status="fail" + + # Save any coredumps from the post-test fs checks + for i in core core.*; do + test -f "$i" || continue + if ((cores++ == 0)); then + _dump_err_cont "[dumped core]" + fi + _save_coredump "$i" + tc_status="fail" + done fi # Reload the module after each test to check for leaks or diff --git a/common/rc b/common/rc index d877ac77a0..2e1891180a 100644 --- a/common/rc +++ b/common/rc @@ -4949,6 +4949,22 @@ _create_file_sized() return $ret } +_save_coredump() +{ + local path="$1" + + local core_hash="$(_md5_checksum "$path")" + local out_file="$REPORT_DIR/$seqnum.core.$core_hash" + + if [ -s "$out_file" ]; then + rm -f "$path" + return + fi + rm -f "$out_file" + + mv "$path" "$out_file" +} + init_rc ################################################################################