From patchwork Mon Sep 18 23:32:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Brennan X-Patchwork-Id: 1836449 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=oracle.com header.i=@oracle.com header.a=rsa-sha256 header.s=corp-2023-03-30 header.b=KWidz3QC; dkim=pass (1024-bit key; unprotected) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-oracle-onmicrosoft-com header.b=qTTtL5Bq; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RqLhw5n8Gz1yhR for ; Tue, 19 Sep 2023 09:33:52 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qiNja-0003Ar-0w; Mon, 18 Sep 2023 19:32:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qiNjW-000399-OG for qemu-devel@nongnu.org; Mon, 18 Sep 2023 19:32:50 -0400 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qiNjU-0001Co-KN for qemu-devel@nongnu.org; Mon, 18 Sep 2023 19:32:50 -0400 Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38IK5063015370; Mon, 18 Sep 2023 23:32:43 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=VDjMH15QvTorDnQEicGRQUIbqfla0KR8+0o1p10RMSk=; b=KWidz3QC4bmbZVVfS2cq1fodakwFIATS+7mAdcuXxXtJZUGZQMJ0Fu4j2WOmT9bjf+2B 9ACd7D/lnNKGuPDTyAYOFPa6WYzVpq0oWw+95v5wliCnqfgTn4hbgSOp2acfTvxGlbZE UqxRJMqPZEefd0sEI7yzEwybjtejLjDPE6w4P1NnpvqN/rSgLMRG1Cq2p55rwhU/nr+G DL2AZ1t7ksogPc24r1kMHft8Fa9oX6FNyFqITH32XUSb+6Srl2BmgSMc8ENOgl/l5gJq g6MtBCXuayeznZ3hsdKWw0+1p40KcnGSj0cEzeB21zXnNgKgMH33ctlmNKD9nJLSU0/B vw== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t548bbmmb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 18 Sep 2023 23:32:43 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 38IL0Z7s030760; Mon, 18 Sep 2023 23:32:42 GMT Received: from nam02-dm3-obe.outbound.protection.outlook.com (mail-dm3nam02lp2046.outbound.protection.outlook.com [104.47.56.46]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3t52t4xp26-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 18 Sep 2023 23:32:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nM+WZwuF0o/+gpp6GGM24HvBuR3VCHIftLqsoQr7AiCgIRqbeyeCb0NuqNfrkDamhvn1esSWtBI1b2Re2AzQ+fJ64T5GKRplRE5b73v1Zz4hKHUyhp8efZ3Wqf/DOvOhUWtvQ+op0ayOU1+wIAV4unGPfc13zejzbONqyl93epIcHzidLp0wMg6rD8wQibdRGK/1kFR0m0JCWDJwj+thujXM2RKy8VK4xzervIXV7K4MrY1QzuPmwFbAMql7EFOKRbI/z0EF18VfEpI4HFNbNCzUFnR+eyq1yqojZ9JrWLlgkSjoanZqXIXz+V+/W4So78oIy/raWpqqjxlDrxXjOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=VDjMH15QvTorDnQEicGRQUIbqfla0KR8+0o1p10RMSk=; b=V+OnD8HyIPue4tIxeWFQ3iPBDrFONn/ZXzV9HY+1o9B7MLiVpCVrkpiq8+jf17OSA5Nljqjq9ZuWeTohlYsbUtsMtjq+rZHluHd3kp7/w6XSEbdDMvDutEunDiw6+WvNZf8AYnz1SuGHoYw3Q+RqVcntQm4yqK3AinDvp2EYMoHrI+EMo+MSkOBSiD5Ap4Z847weXKS6z3LcVCPKrU8/toe8CethOjuNmR4suI/Ke+M28bLaVeKxRhJhbKNah6meOqrPvV4O5c3ZxhtgMZzTUiuHR2JJbuQ5kJkwDoTrSSlVRwtIvmB1P4BGuYUX2RYpQZhwsM3Nk4EGgEgIZoEnmg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VDjMH15QvTorDnQEicGRQUIbqfla0KR8+0o1p10RMSk=; b=qTTtL5Bqo70+cwm9Hl6ckjmjmOQ/nLDUhu2nUmd4gcTFmD8wlSagDub9rjLpf2KPjYbH9jv8JqrvPwBJ0Kqf0ISAd7JkTueDO1BUc1rarrXkMD6BjW9x/wjIz0NNEpaN/d9lNxLrv6397UywKwx7UFF6w4BhuqVh+EDS9iR4KDg= Received: from PH8PR10MB6597.namprd10.prod.outlook.com (2603:10b6:510:226::20) by SJ2PR10MB7758.namprd10.prod.outlook.com (2603:10b6:a03:56f::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.24; Mon, 18 Sep 2023 23:32:37 +0000 Received: from PH8PR10MB6597.namprd10.prod.outlook.com ([fe80::35e3:7e4c:72b2:cf74]) by PH8PR10MB6597.namprd10.prod.outlook.com ([fe80::35e3:7e4c:72b2:cf74%7]) with mapi id 15.20.6792.026; Mon, 18 Sep 2023 23:32:37 +0000 From: Stephen Brennan To: qemu-devel@nongnu.org Cc: linux-debuggers@vger.kernel.org, stephen.s.brennan@oracle.com, =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , Omar Sandoval , Thomas Huth , =?utf-8?q?Daniel_P_=2E_Berrang=C3=A9?= Subject: [PATCH v3 qemu 1/3] dump: Pass DumpState to write_ functions Date: Mon, 18 Sep 2023 16:32:31 -0700 Message-Id: <20230918233233.1431858-2-stephen.s.brennan@oracle.com> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20230918233233.1431858-1-stephen.s.brennan@oracle.com> References: <20230918233233.1431858-1-stephen.s.brennan@oracle.com> X-ClientProxiedBy: SJ0PR05CA0040.namprd05.prod.outlook.com (2603:10b6:a03:33f::15) To PH8PR10MB6597.namprd10.prod.outlook.com (2603:10b6:510:226::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH8PR10MB6597:EE_|SJ2PR10MB7758:EE_ X-MS-Office365-Filtering-Correlation-Id: 05baa48c-7877-499f-ab9c-08dbb89f8aae X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: K++YI9rtlM/IfGqpx+ohrRN7pACs5t1B8dGufC+NZSZZmyKtZ/H9QPjH1MKRF6iaQwckFUATSkyAkVy+qSibbagdTmtijXcfSEj7oZELYXSKnt0gPsYjbsGJUqg+PDxb/f9kT24VyOZ6vvDcE6GBrumbNTt9HNpJtsHEwk6QVf/CXhQAEh7JrFMSLzTMcnRs5TeVyupjgySbQR0c6+Z+j8qnMMEOLa/jrakmE5rb9w560X7DdbZBl5fbUHS9r0msC77W65qg3PwLTE3hpoeyd/YhEgmmeO6EJgtPSMT58rxvQ0+iYOuqx5WA087dsvf3xDPjJSgEj4G8T7LG9uWB7kW4o0lpLPE41aQ4ipG4auAPnJ8V8cRF/5xhq23O7328P1WBxpEgEEAmZ8EiVLpWmThnSD1AhlRJRzphZNVb4CwP9GsZSxm9fhTj6I3xQj1FA9IJfPQ6NLbrgSeFu2yyxDQLNqZO9xvAgZxMYFO75eRYcq40B9YFupWkXbm6KGniqIMd1H3f+Pvcz/QpqkOsHJOcxWEFTkfQD4p9yXAc4BuleulaMH5XZFu9lwtMTsqq X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH8PR10MB6597.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39860400002)(136003)(366004)(346002)(396003)(376002)(451199024)(1800799009)(186009)(6506007)(6486002)(6666004)(103116003)(86362001)(38100700002)(36756003)(1076003)(2616005)(2906002)(6512007)(83380400001)(478600001)(5660300002)(316002)(8676002)(4326008)(8936002)(6916009)(41300700001)(54906003)(66556008)(66946007)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 9ARfmJ9XHN5rI7z+5Db9vYTZEy3XXGyRDa5rJeY5pbNWOC4X8qcYNR56+y6XJokZU7z3Nu4uXH1KJLbntgGlrEYTrVY3cXCgKCcGuiFR/lmwR7Wt92D7cbrsvoR85ccpaK0ofghPmfmt0tFrvEYVncPNhThAru9JcxX2/0ARPu36OYtylxUg6t6vBda3/r9Uq/J7c+cEKos/UK7HVuwSOd9Kf8i/zOYetcHJ04eGU+274iXWu8feQ427G97aIJJNn+7OiZggu9X0j7KfJCj4gkSKJ2W3jcjBu4tKg2JpiW6koRYaN4KK9ydwFbX4eyDpKKrueIWxVH1u6yLiPaf51DyI1U/v+ZayfX/qrgz268jyZy/Eonq5Qkx/vCI0f4ae3WTT+IPv/A6vCil37sG1XWtZqnCzDJlv45fWQLSGDZrmoVrSQjKyB3/9d9OQmJ5b49Dt0rDmvt10lqGXQ+o50IPycwTAARlgEwhKS7vFL7vejI5m6sGHbDndBW5ypjP4k/EnBuoTyn1RFPP54s8OJGgsjb3PRWRl6F4YxVCRZiiO5YOSKru8fb21UD4vH4twoE/sbVIgmP6EdAtLTm2Em2wpKgJYIBf0bW5fjWRal1aXv4OdgkSU/oRSDmWFsK8RgLf8zhCPnQZOLwVzEoZUrZZfrBSAxzINI1bmSCHKG777K5Y/KPyb/e3uwlMIdIwGdd4HSuQSx7e8astMdvHCy3KLvNmGslOKWO+jXBGhp903sm6eM+7KarqDHcybo83vNrDoctsID4VV1BKAhwR4cZm9H0GKLyE5Kd/fwi/iEvPvlyjRv5s/cHnKX8KwazN7ln+0disV9tZPC7iQKwLPzJXqX9sUnH4jg1pejfTsB8+JgsausRcWbdvaMZPwR3L8mJgbp5k34fzFSmRkk2xDTVG7RoZJeBMboA0lWPtROFz+Tv6SIlI4qCK3yIgR6R4xW5N9g4ekA0dQt92o8mv+dHQv8tEgFAEnbeMTACEcBXVLUvd+6Gk13zRs+ND8RWJlYOH7xoZHg7TIdW4kYfN6J+G7oDyGJ0RM+JL+UpJksLYjz7G4jC4iGhyN5USqKlC14wRbBcUaEM+N5sMPQbqk61+2KbacrhIAAPBYjvPIr0HNcnyDT6nysH1FHSnjDgFl3eqKDAdRLA1g0EoNtIbRn1zkkhaIjPlR4qU+dd7Ve8U5ll2D0k5YTPMCF7WZiaNoUEXXfEw9LYbpENErUl4oYqx2MAwdPiG96JFCUsa2sWe1go5r1mIf3rdINXoUC/G2eFg5Fv4E3EUtNlg5ome4u1EZqFtT0Atji24C6slXh3Ue7yrjgl7yjDckRGOk/x5HQnTylx6+mLvdcBrmV7MGGQWWJ42gZnafRWMZ3VEnnKHkTPemoFcMargVWKmVhsV3rsA5IoRB2hemZuC5s/Fl17eTG3tYA72m11TaBfQ75gcQneStrMyYxeKkAWQzq2EG5DYoZwKSZchAzPoxUrCkIq2o/adnj2zzryDAFH6C1rhzX1p0ItK7NuLM8mO1cvhNXI7mLVBBfxdDCJ2waeFCQcj99x1FPUG2qLAHV34kLm/tFNNUG4ChzziT9qDMd4Gne4wVDzA2lkGe0BRNGarMVUxQSJOOjfZd2n+JJA4n6SN402Zd4Pmu0FxDi8a7GQyi X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: QAMCnq1nUhK0FzBbJARTVH1RUBImU6yJ0XTHhEE+Eh3nBruvDJ/iekZEuMabC3ORoJqWmATextfzpT2IgJYihiTwt54uAUqUhImJvfIybQyiHPq7ypoHyTH7uUScYhYT9Bg+i5Dd3zwx3LNl5uGBhXxSEMavTndho6afSzHlzZY067AvDXOrqzn1w8q8a7pOLtl8dSfALVoidENENxR9mGDCORm8nUGLMG0UtJeGEJiRyo1FC2AuNDWyHkmBUn/jxrokOs319z9jJR6L4ARWUbFDTdOs/tHhEzS8jEIrxP4ZrUS0Cigje3dizfp8X+x6u5wTD0+ijv2CrgQba8zYE7DdZWVlYUA7rIFIz/JcvHzXAYw00Deq+QsJj1h9rZvBtTKB+Pc0Yhw/TPxU7pOhonvvfuLP8/AITHGEV9SXD9oLVJd5+QIED9P+oBgWzxnsERFjsR8WMG69BEwg+8wfx1z4zNGl+OqJfE6Kc1/aHSKN1+uLEbj8N/fWJNv4Cg5MrwZNKK3nWWqCHHYNt0/Fr5LhMM3EUJ5a84jXaz5V9m3WtwSLIeIT+P18PxN4Z39tD8+RxAisC8gfnIo5cGFWwx8D4YK/DjOKv7SI1zOrwSxGXQ5psfIfb864TOsQMW2n8V9GxjnQB2sbSaCb+PAvwHQJaVU/B4AIiTCfk4r58m5x5ibxFNXWoAX7sale6y5DymTdlG51s4sexVhZYM6U1ygbZ55ITYnD4WKZr32aQuD7cqVWavPs1mpeeInfVvnCZfL4nn+X+3qyh8IoQwooit/mjUCpSMbSFJZPFc5GdbbiRp6QL6n/a1S7tfzNfUq/YLlr/XUC46LFaqz79xoiLXGnCPAN9ojN1A2JwAiunmtfksxaoo00WTz8s8XToYiM X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 05baa48c-7877-499f-ab9c-08dbb89f8aae X-MS-Exchange-CrossTenant-AuthSource: PH8PR10MB6597.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Sep 2023 23:32:37.0831 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: pd65Gpc1e4AkAUHrNCthnC85a/xBXvKE2CNR0Eacvtis7s6E6DYQxgt1BGtY0Yn2L/HTBJrfOUDP1h4ozf61SNX5/jedapxeCp5FrlDhJgk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR10MB7758 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.601,FMLib:17.11.176.26 definitions=2023-09-18_11,2023-09-18_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 mlxscore=0 mlxlogscore=999 bulkscore=0 malwarescore=0 suspectscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2308100000 definitions=main-2309180203 X-Proofpoint-GUID: uZyDOo8JZGQx7Yc5cZ8VpRJv2qooz06S X-Proofpoint-ORIG-GUID: uZyDOo8JZGQx7Yc5cZ8VpRJv2qooz06S Received-SPF: pass client-ip=205.220.165.32; envelope-from=stephen.s.brennan@oracle.com; helo=mx0a-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org For the next patch, we need a reference to DumpState when writing data. Signed-off-by: Stephen Brennan --- dump/dump.c | 40 ++++++++++++++++++++-------------------- include/sysemu/dump.h | 2 +- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/dump/dump.c b/dump/dump.c index d4ef713cd0..74071a1565 100644 --- a/dump/dump.c +++ b/dump/dump.c @@ -809,7 +809,7 @@ static void create_vmcore(DumpState *s, Error **errp) dump_end(s, errp); } -static int write_start_flat_header(int fd) +static int write_start_flat_header(DumpState *s) { MakedumpfileHeader *mh; int ret = 0; @@ -824,7 +824,7 @@ static int write_start_flat_header(int fd) mh->version = cpu_to_be64(VERSION_FLAT_HEADER); size_t written_size; - written_size = qemu_write_full(fd, mh, MAX_SIZE_MDF_HEADER); + written_size = qemu_write_full(s->fd, mh, MAX_SIZE_MDF_HEADER); if (written_size != MAX_SIZE_MDF_HEADER) { ret = -1; } @@ -833,7 +833,7 @@ static int write_start_flat_header(int fd) return ret; } -static int write_end_flat_header(int fd) +static int write_end_flat_header(DumpState *s) { MakedumpfileDataHeader mdh; @@ -841,7 +841,7 @@ static int write_end_flat_header(int fd) mdh.buf_size = END_FLAG_FLAT_HEADER; size_t written_size; - written_size = qemu_write_full(fd, &mdh, sizeof(mdh)); + written_size = qemu_write_full(s->fd, &mdh, sizeof(mdh)); if (written_size != sizeof(mdh)) { return -1; } @@ -849,7 +849,7 @@ static int write_end_flat_header(int fd) return 0; } -static int write_buffer(int fd, off_t offset, const void *buf, size_t size) +static int write_buffer(DumpState *s, off_t offset, const void *buf, size_t size) { size_t written_size; MakedumpfileDataHeader mdh; @@ -857,12 +857,12 @@ static int write_buffer(int fd, off_t offset, const void *buf, size_t size) mdh.offset = cpu_to_be64(offset); mdh.buf_size = cpu_to_be64(size); - written_size = qemu_write_full(fd, &mdh, sizeof(mdh)); + written_size = qemu_write_full(s->fd, &mdh, sizeof(mdh)); if (written_size != sizeof(mdh)) { return -1; } - written_size = qemu_write_full(fd, buf, size); + written_size = qemu_write_full(s->fd, buf, size); if (written_size != size) { return -1; } @@ -982,7 +982,7 @@ static void create_header32(DumpState *s, Error **errp) #endif dh->status = cpu_to_dump32(s, status); - if (write_buffer(s->fd, 0, dh, size) < 0) { + if (write_buffer(s, 0, dh, size) < 0) { error_setg(errp, "dump: failed to write disk dump header"); goto out; } @@ -1012,7 +1012,7 @@ static void create_header32(DumpState *s, Error **errp) kh->offset_note = cpu_to_dump64(s, offset_note); kh->note_size = cpu_to_dump32(s, s->note_size); - if (write_buffer(s->fd, DISKDUMP_HEADER_BLOCKS * + if (write_buffer(s, DISKDUMP_HEADER_BLOCKS * block_size, kh, size) < 0) { error_setg(errp, "dump: failed to write kdump sub header"); goto out; @@ -1027,7 +1027,7 @@ static void create_header32(DumpState *s, Error **errp) if (*errp) { goto out; } - if (write_buffer(s->fd, offset_note, s->note_buf, + if (write_buffer(s, offset_note, s->note_buf, s->note_size) < 0) { error_setg(errp, "dump: failed to write notes"); goto out; @@ -1093,7 +1093,7 @@ static void create_header64(DumpState *s, Error **errp) #endif dh->status = cpu_to_dump32(s, status); - if (write_buffer(s->fd, 0, dh, size) < 0) { + if (write_buffer(s, 0, dh, size) < 0) { error_setg(errp, "dump: failed to write disk dump header"); goto out; } @@ -1123,7 +1123,7 @@ static void create_header64(DumpState *s, Error **errp) kh->offset_note = cpu_to_dump64(s, offset_note); kh->note_size = cpu_to_dump64(s, s->note_size); - if (write_buffer(s->fd, DISKDUMP_HEADER_BLOCKS * + if (write_buffer(s, DISKDUMP_HEADER_BLOCKS * block_size, kh, size) < 0) { error_setg(errp, "dump: failed to write kdump sub header"); goto out; @@ -1139,7 +1139,7 @@ static void create_header64(DumpState *s, Error **errp) goto out; } - if (write_buffer(s->fd, offset_note, s->note_buf, + if (write_buffer(s, offset_note, s->note_buf, s->note_size) < 0) { error_setg(errp, "dump: failed to write notes"); goto out; @@ -1204,7 +1204,7 @@ static int set_dump_bitmap(uint64_t last_pfn, uint64_t pfn, bool value, while (old_offset < new_offset) { /* calculate the offset and write dump_bitmap */ offset_bitmap1 = s->offset_dump_bitmap + old_offset; - if (write_buffer(s->fd, offset_bitmap1, buf, + if (write_buffer(s, offset_bitmap1, buf, bitmap_bufsize) < 0) { return -1; } @@ -1212,7 +1212,7 @@ static int set_dump_bitmap(uint64_t last_pfn, uint64_t pfn, bool value, /* dump level 1 is chosen, so 1st and 2nd bitmap are same */ offset_bitmap2 = s->offset_dump_bitmap + s->len_dump_bitmap + old_offset; - if (write_buffer(s->fd, offset_bitmap2, buf, + if (write_buffer(s, offset_bitmap2, buf, bitmap_bufsize) < 0) { return -1; } @@ -1380,7 +1380,7 @@ out: static void prepare_data_cache(DataCache *data_cache, DumpState *s, off_t offset) { - data_cache->fd = s->fd; + data_cache->state = s; data_cache->data_size = 0; data_cache->buf_size = 4 * dump_bitmap_get_bufsize(s); data_cache->buf = g_malloc0(data_cache->buf_size); @@ -1399,11 +1399,11 @@ static int write_cache(DataCache *dc, const void *buf, size_t size, /* * if flag_sync is set, synchronize data in dc->buf into vmcore. * otherwise check if the space is enough for caching data in buf, if not, - * write the data in dc->buf to dc->fd and reset dc->buf + * write the data in dc->buf to dc->state->fd and reset dc->buf */ if ((!flag_sync && dc->data_size + size > dc->buf_size) || (flag_sync && dc->data_size > 0)) { - if (write_buffer(dc->fd, dc->offset, dc->buf, dc->data_size) < 0) { + if (write_buffer(dc->state, dc->offset, dc->buf, dc->data_size) < 0) { return -1; } @@ -1644,7 +1644,7 @@ static void create_kdump_vmcore(DumpState *s, Error **errp) * +------------------------------------------+ */ - ret = write_start_flat_header(s->fd); + ret = write_start_flat_header(s); if (ret < 0) { error_setg(errp, "dump: failed to write start flat header"); return; @@ -1665,7 +1665,7 @@ static void create_kdump_vmcore(DumpState *s, Error **errp) return; } - ret = write_end_flat_header(s->fd); + ret = write_end_flat_header(s); if (ret < 0) { error_setg(errp, "dump: failed to write end flat header"); return; diff --git a/include/sysemu/dump.h b/include/sysemu/dump.h index 7008d43d04..e27af8fb34 100644 --- a/include/sysemu/dump.h +++ b/include/sysemu/dump.h @@ -137,7 +137,7 @@ typedef struct QEMU_PACKED KdumpSubHeader64 { } KdumpSubHeader64; typedef struct DataCache { - int fd; /* fd of the file where to write the cached data */ + DumpState *state; /* dump state related to this data */ uint8_t *buf; /* buffer for cached data */ size_t buf_size; /* size of the buf */ size_t data_size; /* size of cached data in buf */ From patchwork Mon Sep 18 23:32:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Brennan X-Patchwork-Id: 1836446 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=oracle.com header.i=@oracle.com header.a=rsa-sha256 header.s=corp-2023-03-30 header.b=mESwYT1j; dkim=pass (1024-bit key; unprotected) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-oracle-onmicrosoft-com header.b=XP3CWhLi; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RqLhg1Bvdz1yny for ; Tue, 19 Sep 2023 09:33:38 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qiNjY-0003AE-9z; Mon, 18 Sep 2023 19:32:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qiNjW-000398-O0 for qemu-devel@nongnu.org; Mon, 18 Sep 2023 19:32:50 -0400 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qiNjU-0001Cs-QY for qemu-devel@nongnu.org; Mon, 18 Sep 2023 19:32:50 -0400 Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38IK4xQ1015328; Mon, 18 Sep 2023 23:32:44 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=qlIZ4gfnRWCZURG1EtiJ+4pN6HUD69YBYxdsD5TvA5Q=; b=mESwYT1jBW2dSIHw9zZpSRD5KNBiDSQCFHJnRAycLscmw2+j8jWJOx8z4t+tG1ScbGnI fYGc0+A7+tHRNjSSFkrGA5T+o1tzTxrza3n8exOLPQi1YsHsIK42XCxyQ3X3bUzYqXku 4xNbMBAdHWmyc+gXFHGOVe3tcE2Uh+Fi9vw6JwAu1ePZd5ifTgGhPUeGIyDWMzdHpydb gq7Z6sSE4RkPimPEhOH6OmbrnF68qg47p/8XTZNBZOZvGcbPxGJ601e+qms8rGt8bT4I twOoJdnPBllSToZCiOopynB14nA9W6yJsfTLMu++1ZlN89+PGx15p7znpJGKO25GK/nq zQ== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t548bbmmc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 18 Sep 2023 23:32:43 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 38IL0Z7u030760; Mon, 18 Sep 2023 23:32:43 GMT Received: from nam02-dm3-obe.outbound.protection.outlook.com (mail-dm3nam02lp2046.outbound.protection.outlook.com [104.47.56.46]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3t52t4xp26-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 18 Sep 2023 23:32:43 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XJnFz7AaYqmQlRWwaZ6ZrxOil6cUJlHymt+RJl8NlEkWtmk5h4T3csoty9HK7m0WdjbWAAkqbtxg4bLa7PwnevVXYTEirXhCcn8zT5m7BGVwwSp8cyewAkmRV7/1bxRPISv0F7vOqWBQjiJDO4mnSsZ7wZ2SZtmlMpcPtfTshFr4QGJXCwDFa4+YN5iG1qRB05av4S0d4aEm6TE1ztNCuFL8xrXX8HJND4EK+ROiBRQ8lGT6DX/oyJDoFJh0QM9ntKyAT22TrZqtvY1k4Z4YHMZQ9Xzkj08KY8kL3RrplXl/7uxM9qOaSr5JGXQweeF6y6957FvlFJZgAjX7AdLm+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=qlIZ4gfnRWCZURG1EtiJ+4pN6HUD69YBYxdsD5TvA5Q=; b=ah1qC15whf+gHmUEShq6fcqBEhZI0ybGRTNFQtyqmZt9hW1dJZ7taUfSrNusCGAlbTtLYM6tNpTnV6o984VYcZlddRvUMiZX0Tj+648Ww9e8od8D/5XByN5p5/vaQU6yX5jXf0CMcVq73jKz3Q4Y76KuiVDGf5j+d/iqI+kBLYKiFTkSRi4IVsIdjwkxZG+4Pu0IVDfeoGaWnsZ31MQqMukKA3ZVw3XxgHgX0vm9Vc47g1BMgFELrq/W8HTXQCCoJo9ofLMg7HRhQlNNBGcEGpSHUFh1kOjUVluaqK8g8fRx//tdjY24x8p3jKqKEXSzV3W/t6OUJZs4Myo8PsEhmw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qlIZ4gfnRWCZURG1EtiJ+4pN6HUD69YBYxdsD5TvA5Q=; b=XP3CWhLiv0+o+SAaq2KTUBjXvIAYlUqyaivTmEjYjCDe7/j1r0sDMKyXpWL0TkNBrHg1RGL9UjNJsjaBwgk1EQXzYl6yckJ6AJbr8ji2iG1uvabiButq5lc3Pgoou05kZvkuBH+aUHv4cXKVJDlixFJ0tuqtcywwRdttGOG/Ekc= Received: from PH8PR10MB6597.namprd10.prod.outlook.com (2603:10b6:510:226::20) by SJ2PR10MB7758.namprd10.prod.outlook.com (2603:10b6:a03:56f::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.24; Mon, 18 Sep 2023 23:32:39 +0000 Received: from PH8PR10MB6597.namprd10.prod.outlook.com ([fe80::35e3:7e4c:72b2:cf74]) by PH8PR10MB6597.namprd10.prod.outlook.com ([fe80::35e3:7e4c:72b2:cf74%7]) with mapi id 15.20.6792.026; Mon, 18 Sep 2023 23:32:38 +0000 From: Stephen Brennan To: qemu-devel@nongnu.org Cc: linux-debuggers@vger.kernel.org, stephen.s.brennan@oracle.com, =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , Omar Sandoval , Thomas Huth , =?utf-8?q?Daniel_P_=2E_Berrang=C3=A9?= Subject: [PATCH v3 qemu 2/3] dump: Allow directly outputting raw kdump format Date: Mon, 18 Sep 2023 16:32:32 -0700 Message-Id: <20230918233233.1431858-3-stephen.s.brennan@oracle.com> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20230918233233.1431858-1-stephen.s.brennan@oracle.com> References: <20230918233233.1431858-1-stephen.s.brennan@oracle.com> X-ClientProxiedBy: BYAPR07CA0030.namprd07.prod.outlook.com (2603:10b6:a02:bc::43) To PH8PR10MB6597.namprd10.prod.outlook.com (2603:10b6:510:226::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH8PR10MB6597:EE_|SJ2PR10MB7758:EE_ X-MS-Office365-Filtering-Correlation-Id: b84b5491-624e-490b-556f-08dbb89f8bca X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gkcIGAdQqsFtpdk8uAVhHtu3WOxOwr1qzoeTUHq0orhIjgBzZLOl3ePKDzBt1ft9ME7id0/ihwF0AggEE5YyI12HshGE80JUZnI2FcWMjx9o2bo/do/3CEOECMQtbDywsI68QEeZn0N/8GMgdC2AkYSzU0aEDelNfXtPtKcEJx2pa/3jZ2NHVsF/k5UhbOYLNP0A86Ct+9LvQf6AWu1MaoOYtVPHmT1Z8YcBeBAcYyzKESZqawN5bPvqF2t4F8vDhAw880ptZyvXdPRWJeIu1FU7ZttifvJFBGDLtWINguPcrCwyyHZES3vuBBNMNL9MHrJcHpLBHJLn3clZWK+5Ccp3/d0vtNtA0L8Inzf2/wTiJpaF2K5KnRc99wV9TcPjcBEhZ66C155UgQVPQxnwjSIjkgU4ADfd7Ja7rKVynEbYGM8k9uBHyzx1rrkxStOjGxvZJ3Jnxk27s3GSZKyICOZBdApDH6smecRtSsyTG0cfBnA2Wx8HkCDvv2JgQgnfjjTOrcksR5riIcl+LMb/xAltUect6p5DtDVThiALAiw= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH8PR10MB6597.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39860400002)(136003)(366004)(346002)(396003)(376002)(451199024)(1800799009)(186009)(66899024)(6506007)(6486002)(6666004)(103116003)(86362001)(38100700002)(36756003)(1076003)(2616005)(2906002)(966005)(6512007)(83380400001)(478600001)(5660300002)(316002)(8676002)(4326008)(8936002)(6916009)(41300700001)(54906003)(66556008)(66946007)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 5p9dGSHleM4upm13J3399T4EJv+3tdW4usvqCn/QOcav6J+2R9vdektSSydRu6+nBuYe5qxAXnrGniR+L6csLlGF/QtPSqQC9LObsGYfD0vUv63mECZpC6YL2JSUbMAPVKvzyBaFNxtVTiusa30eT823kF6/hRG+QVvBTyVkvlDVN9onIpiGePJKwN6D5vDbg9Qk4Yu75y+v0qTnWmQQSC4EfsgNrvVvl7Bhj4fzVVOpfmDwy7pCiRRQZBDELmthhRPRhJ+yMKJTatLGpmINxcon0jpi5WmnWpt4hNEhQX8j6vPOkwIPAWDNBzcZCYxxxGCxm/9/v2ACMsHGXquASIbl1diULDMhmFpyJVPlcb95th6vYVJRJbEk5d13a9aVsORYqhZ2Ndyt8NXHLSMxjKeEIlwuyVsihH9GElCNzgXiZbzonrsrLuqEyFLMxqmdaXQQK5GdAI0k+wllZ/YAIx3V4oqnWhfjtHGM1xaV9oQlXxA6M8RY18gl/L639SEUowoETU5IPlgwn03L01OfO7MlKHYATSmDS0powEiN+LevGTW5/NhsfspZDndjKWrEfLmYdsi3g+wpn5dQhl4RpDDQu/kn1oPZvMlr3kx8Ie2wQYmNF24EVOLO2U4IBWp4rSiRSdE/2vJ3iMupWyRWebw75L67PSotQ+jjDsE3dMMIHY8Qawxh0vOoHmvrdXARxGAMQ1mbjPRL2CvgW+VMK3cuyGc7P0E01Yn7H+ybwA1rec1nwsXGGAvH0SSiXJYgKkzoFjU7AtNJ9sAVRxzzd3O80I5+YEmlXmJ3g0Pheh/uvP5odCJZY1v3zY+5ndoIjZVixfbWWb0w+K4XYVz7EmX/OITI5Xg7N73pw+btl3UC/GbNpvl16aezLEWqPvKBDxObvTLQTRstlB8V4NIC7Qd2uzI4qV4bW+14+d87ANT3Z/4ef0hoa3/SXP2cmCkV0Tu5IyJONYMd5GNr1z4tgwdf4b0vpvoFmeJwrWVnLpiLNuSFXNep9IwyjfYzZ+HFymUBk2FAwn53dm/p9IP0N0zBnvFghqAM55sq85LB4pGk3AOaqcazAHhQllf8RzW5mYgMtV5h6YT6IOU2t9Dhp48HO24Cd3IQqdhGyxPWrl64pqPe7Og5twya2kiEERevreJpHDvpQuI6/wfcndpwqMExKlimBvq+mCW0nFH+sufi5X6JGPZlleB1JCxzeysRXAqNdkzP2dsv5xdlZDHkY/pvt9LjdTDelb1xQ7KSl64/qy/JWpHljg9UGqfUATe/Jrc7oSnlC2oal3I30xFB767tIc9I1kHD6XUqXTC88iwO9GTm54pkmnEWaQDT5Zwz61svkNKRLs7268u9wxsFDrCQ8IfKAvpJkVTTJ86vp3P0R5d7OB5+mZnbkjEwhF5plkuSKP/rCJL032XI4S+/rg5QJRRE4sfAHnXDs4Pz5gSJnV8CDBms7bhofvXAoivirFml31DUFOqxooyCH8XPs9yvwixjCZKbp5YFydby9odjOl16Yeb0mJo9pwpQ75z9FDfHSv/FL0DlZhK9Gvkk5Kds76ayqteS1cJoJw8bDu9SWZI8APiF50s8KWaac+ZeYrKR/FRUKDuljS+I9ppec3WmymKq7tXRuILVGNemagWws4v8vZSvZWTepq3Sq6KK X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: bAAAlABQxSQuumYzHdRoupd5uizP8eQZ/SO7mRJxtr3Ir+Hc62maaDTl2zO+6Plfnyd0P5/cJ9LGDI3+T+qNOsEs+oh7ODmHaOxK2sK6aeKRvKSUX0vdA3aQJqrc1tAoSS890TjJXoMSwOeMVI7GFQR5mnDbm0R5c3wVaywt/fz/xxqQ7Udysx1Y/DYEcV0KSIqh/YKhilhUc+5aMjW24rerqHuML0cN6RCEcHcbVJQiao0s+iRDl0QYTRmfxruUa1pDSnvaB810MoaaB3xoeDVIv8XPNNr0wSvWj51mgZvqEdPejMuVNOu/3HjS8pHlWjdnxYzxb3F7Uf2M9c1jxY6X+bFLjSHpgyiI4lz8xhBiADu+nDm1cLVP1jOTdGxteCdnRdlrGItm8A+BTIaV3QZRIO57s4NpLoqHanB5pqLa/Fi44uK+KSSTdCjru+v0aBParVKmrSjfCUaGnJYuTUc0MnPPXtq9vHnXVznNUsvv+AUcedIo3bgkPpZwKGVy5TfO4t/O1ed9trWli2myJ0tZh7TZfs5nQEF1GzbR62zyG92TjP20DPPYqAjWriF/neyYzi5ePApnRJklZ0gMtms7q2LkXZ5qSFRAl9SpxsOU4X4bdkIYxvt1cbOMzYPDn/YljvvvLl0IWJZ1+vwWXJtKEdNe2Pi2Q3ENAa5Ir/vO4jt4pp0vLFJEzZBUhXR0HHVCLR35SDI+BNFBDYLMYq5T9mxslAYGInmMkufWEq/sjnRyNEmZ+zNGFkM2uMpVdk07SL02lO5Yyg6St6iJe3h6GQd91kNWUVn4+GaMiYHxy6nhXhKS/Xr3mG5pcp7lsAUs7ECe5MI5JncEo/eOsUtnSGDxkTjaR9MPThtbHzLcAqY0zkpSoDcnnoje4RSO X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: b84b5491-624e-490b-556f-08dbb89f8bca X-MS-Exchange-CrossTenant-AuthSource: PH8PR10MB6597.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Sep 2023 23:32:38.8956 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: HIyuS/Og2JsGk/5XycnrXtPpA4A6eu2Q7GIwbgzWTy1K+qemwGyGVx4lX87oe/iUImq7oH9xCovWsZuulUw8kM6slMzkrSdry3C8JTWS4no= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR10MB7758 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.601,FMLib:17.11.176.26 definitions=2023-09-18_11,2023-09-18_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 mlxscore=0 mlxlogscore=999 bulkscore=0 malwarescore=0 suspectscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2308100000 definitions=main-2309180203 X-Proofpoint-GUID: TW7bdm3hyD5-tb50mHVvaRC-bso1CLoK X-Proofpoint-ORIG-GUID: TW7bdm3hyD5-tb50mHVvaRC-bso1CLoK Received-SPF: pass client-ip=205.220.165.32; envelope-from=stephen.s.brennan@oracle.com; helo=mx0a-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org The flattened format (currently output by QEMU) is used by makedumpfile only when it is outputting a vmcore to a file which is not seekable. The flattened format functions essentially as a set of instructions of the form "seek to the given offset, then write the given bytes out". The flattened format can be reconstructed using makedumpfile -R, or makedumpfile-R.pl, but it is a slow process because it requires copying the entire vmcore. The flattened format can also be directly read by crash, but still, it requires a lengthy reassembly phase. To sum up, the flattened format is not an ideal one: it should only be used on files which are actually not seekable. This is the exact strategy which makedumpfile uses, as seen in the implementation of "write_buffer()" in makedumpfile [1]. However, QEMU has always used the flattened format. For compatibility it is best not to change the default output format without warning. So, add a flag to DumpState which changes the output to use the normal (i.e. raw) format. This flag will be added to the QMP and HMP commands in the next change. [1]: https://github.com/makedumpfile/makedumpfile/blob/f23bb943568188a2746dbf9b6692668f5a2ac3b6/makedumpfile.c#L5008-L5040 Signed-off-by: Stephen Brennan --- dump/dump.c | 32 +++++++++++++++++++++++++------- include/sysemu/dump.h | 1 + 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/dump/dump.c b/dump/dump.c index 74071a1565..10aa2c79e0 100644 --- a/dump/dump.c +++ b/dump/dump.c @@ -814,6 +814,10 @@ static int write_start_flat_header(DumpState *s) MakedumpfileHeader *mh; int ret = 0; + if (s->kdump_raw) { + return 0; + } + QEMU_BUILD_BUG_ON(sizeof *mh > MAX_SIZE_MDF_HEADER); mh = g_malloc0(MAX_SIZE_MDF_HEADER); @@ -837,6 +841,10 @@ static int write_end_flat_header(DumpState *s) { MakedumpfileDataHeader mdh; + if (s->kdump_raw) { + return 0; + } + mdh.offset = END_FLAG_FLAT_HEADER; mdh.buf_size = END_FLAG_FLAT_HEADER; @@ -853,13 +861,21 @@ static int write_buffer(DumpState *s, off_t offset, const void *buf, size_t size { size_t written_size; MakedumpfileDataHeader mdh; + loff_t seek_loc; - mdh.offset = cpu_to_be64(offset); - mdh.buf_size = cpu_to_be64(size); + if (s->kdump_raw) { + seek_loc = lseek(s->fd, offset, SEEK_SET); + if (seek_loc == (off_t) -1) { + return -1; + } + } else { + mdh.offset = cpu_to_be64(offset); + mdh.buf_size = cpu_to_be64(size); - written_size = qemu_write_full(s->fd, &mdh, sizeof(mdh)); - if (written_size != sizeof(mdh)) { - return -1; + written_size = qemu_write_full(s->fd, &mdh, sizeof(mdh)); + if (written_size != sizeof(mdh)) { + return -1; + } } written_size = qemu_write_full(s->fd, buf, size); @@ -1775,7 +1791,8 @@ static void vmcoreinfo_update_phys_base(DumpState *s) static void dump_init(DumpState *s, int fd, bool has_format, DumpGuestMemoryFormat format, bool paging, bool has_filter, - int64_t begin, int64_t length, Error **errp) + int64_t begin, int64_t length, bool kdump_raw, + Error **errp) { ERRP_GUARD(); VMCoreInfoState *vmci = vmcoreinfo_find(); @@ -1786,6 +1803,7 @@ static void dump_init(DumpState *s, int fd, bool has_format, s->has_format = has_format; s->format = format; s->written_size = 0; + s->kdump_raw = kdump_raw; /* kdump-compressed is conflict with paging and filter */ if (has_format && format != DUMP_GUEST_MEMORY_FORMAT_ELF) { @@ -2168,7 +2186,7 @@ void qmp_dump_guest_memory(bool paging, const char *file, dump_state_prepare(s); dump_init(s, fd, has_format, format, paging, has_begin, - begin, length, errp); + begin, length, false, errp); if (*errp) { qatomic_set(&s->status, DUMP_STATUS_FAILED); return; diff --git a/include/sysemu/dump.h b/include/sysemu/dump.h index e27af8fb34..d702854853 100644 --- a/include/sysemu/dump.h +++ b/include/sysemu/dump.h @@ -157,6 +157,7 @@ typedef struct DumpState { MemoryMappingList list; bool resume; bool detached; + bool kdump_raw; hwaddr memory_offset; int fd; From patchwork Mon Sep 18 23:32:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Brennan X-Patchwork-Id: 1836448 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=oracle.com header.i=@oracle.com header.a=rsa-sha256 header.s=corp-2023-03-30 header.b=fJr3PZxi; dkim=pass (1024-bit key; unprotected) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-oracle-onmicrosoft-com header.b=AUii9NhX; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RqLhp6cVxz1yhR for ; Tue, 19 Sep 2023 09:33:46 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qiNja-0003Ax-EC; Mon, 18 Sep 2023 19:32:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qiNjY-0003AH-GT for qemu-devel@nongnu.org; Mon, 18 Sep 2023 19:32:52 -0400 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qiNjV-0001Cz-4f for qemu-devel@nongnu.org; Mon, 18 Sep 2023 19:32:52 -0400 Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38IK3poE012950; Mon, 18 Sep 2023 23:32:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=ScZZRPJTPMvWOVwt5webCy/Tq5aeLTW2Ne1qT1zGFsQ=; b=fJr3PZxi/zauy2S2DV3PkC0eZ97dRz7fRUNXgrTVNauCBOQxI8VNp8jvGQBpO78QaxND GSSzHf5omdBB+uY1D3qc1xMM+ZDtrl6OEQ1QZuurjwlq0HBamASmWGVW6iLSHqJ7T410 gkmKsofayEabqQxOfZM7UYYuoVxqHXcXl/qxIsWPBYodhAWoS9L0EMdUnkoPSyeYYyuJ Xr5L2meHUXjX6uoF0r5L+ZGCt3l4UdnLUlzjThYXJ2n0QsSKpluZpvHmeCYKnf161q0F cZ1mTilFuQZwEdpq/DV/nxiWElce+UMv/WXAI7Q7d8QitceuAvf0y1MQjLHK40JpVqUM nA== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t52sduq96-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 18 Sep 2023 23:32:47 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 38IL45MB030083; Mon, 18 Sep 2023 23:32:46 GMT Received: from nam02-dm3-obe.outbound.protection.outlook.com (mail-dm3nam02lp2048.outbound.protection.outlook.com [104.47.56.48]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3t52t4wnv2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 18 Sep 2023 23:32:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DwJmumOAg5HIIkYNHkDxqiBUxlRY7pUVXUpxrRAyCkGuL4srSsmOmAvkf4UwEck/ZLp4Qt6b3bJ7kjDypxJqb3uhE8XusXsPL1/Pup5LtGjTZVkn7u1D4SmYh0NNLpNYAMsTMy9Fu//AvjVgMbgqksz0v+CGyaJhnASPRGFRNVSEg2ujswC2LhstMcO/n2RrJYrGFIIb7j0NeMilCQqu3qlrWLPJIuMH6tZ4rP+hh0KRJsA83swZbvA0lvSLgR0AIL9R2lo3Z39fiXKLVsJ0hwiE4cCnhVRmCDj5TzWpDlTfBHmAzlngtg6RwO6L51fddv0qsoCMOCkLkUQxzmU6sQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ScZZRPJTPMvWOVwt5webCy/Tq5aeLTW2Ne1qT1zGFsQ=; b=OlntdOM7WK4UFV8gYX7/4sf40Z34O36qxunoNcz7uR7SsfAnaf31EgIkvhg17zzfl4kH7EExPkTRgbYx0C0lDtkEQRaI6d9S6RuiJgeJihoezb9x0oAztRivWh7Judnhklaf/8WJ1+2AqTTouKgpIlS1w0XFpWe2FAold60Iz3eCduYIwODAx1CBMejRmT7BDQ1ERu0nijWpFoFFwm5aDGnzUKO4zK8jM3mps8Ueei1PI2tVmsmelGarQY4pTWxcWE6CtcOKTxelhXdhGNdGpGzcEUIZcfDSqm71x1Qe8cgeIEj8Ge3KgEZAHQm+e2I0nJ4DoEe2BBZlaDUL5VLT6A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ScZZRPJTPMvWOVwt5webCy/Tq5aeLTW2Ne1qT1zGFsQ=; b=AUii9NhX/0Jo+VgtNDO+OTo5JVgYxC6xy6xfk8mY4JCiL75guehZPi7o5MireCGBXHe6l9rhSJyoHWnUuflGWGMaQVbM4GFhQlxM4tt3IsuzUWZC/+WqNaYIx8uOBkE8YkvICM2mFCfCqPE5G3E1Y+/v3desM++H8VP92Nf2c5c= Received: from PH8PR10MB6597.namprd10.prod.outlook.com (2603:10b6:510:226::20) by SJ2PR10MB7758.namprd10.prod.outlook.com (2603:10b6:a03:56f::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.24; Mon, 18 Sep 2023 23:32:42 +0000 Received: from PH8PR10MB6597.namprd10.prod.outlook.com ([fe80::35e3:7e4c:72b2:cf74]) by PH8PR10MB6597.namprd10.prod.outlook.com ([fe80::35e3:7e4c:72b2:cf74%7]) with mapi id 15.20.6792.026; Mon, 18 Sep 2023 23:32:40 +0000 From: Stephen Brennan To: qemu-devel@nongnu.org Cc: linux-debuggers@vger.kernel.org, stephen.s.brennan@oracle.com, =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , Omar Sandoval , Thomas Huth , =?utf-8?q?Daniel_P_=2E_Berrang=C3=A9?= Subject: [PATCH v3 qemu 3/3] dump: Add command interface for kdump-raw formats Date: Mon, 18 Sep 2023 16:32:33 -0700 Message-Id: <20230918233233.1431858-4-stephen.s.brennan@oracle.com> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20230918233233.1431858-1-stephen.s.brennan@oracle.com> References: <20230918233233.1431858-1-stephen.s.brennan@oracle.com> X-ClientProxiedBy: SJ0PR05CA0152.namprd05.prod.outlook.com (2603:10b6:a03:339::7) To PH8PR10MB6597.namprd10.prod.outlook.com (2603:10b6:510:226::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH8PR10MB6597:EE_|SJ2PR10MB7758:EE_ X-MS-Office365-Filtering-Correlation-Id: 36325b31-dcfa-4d87-1a17-08dbb89f8c9c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: T48UZxTns+h1ajYMQxhvtyNgWwoIpn46Me0JBXozQySVQq9V7ESECFksrap2coFFEvjnoZOBuvnUI1x+B+6F3AWhVlJwJkoLgtipz+BHz/PRgH65UJilmBBrvpIL/KewCBNp4EZmVTdxaGkt5PPNLunDzZWWdNS3U1aJp7A24TclyuzmxzZgcu2nCa3BeMbq5r3hBA6xGPFKZS2rczxW1zv1Apfm7sID/l0wR37Ym0uzVfCdHOv/71Wm62+zXTfNfwQipZrNUneSRW28excpqB1Y2uiL4F5hwrSLBULQh/JeqL9BGcZi2tYP2DUtTej2EozPuQlReEC0JJevLsvymBi59QhX3d2DFWRtPPNf0s6fppcxDV1Jx+8t30yWa3jiy5TsKGIQlUTTQ0Z1l0Qfe+JX0QGjjkwPJaTklKVqyVE7Q+xg+oc5FoahEUr7tzKpuBzVbDGt4x23VFXCaEXP1jiqonr9e6v8k0DfY4DkT58+DUqHYtPSiVvIxlkXxkcEeMOJxYZRq3c9b7/cHdGNsPo1XqrnLSvp6IK8B3vc4tNQdYm4DDcslpatgvKmXY+e X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH8PR10MB6597.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39860400002)(136003)(366004)(346002)(396003)(376002)(451199024)(1800799009)(186009)(6506007)(6486002)(6666004)(103116003)(86362001)(38100700002)(36756003)(1076003)(2616005)(2906002)(6512007)(83380400001)(478600001)(5660300002)(316002)(8676002)(4326008)(8936002)(6916009)(41300700001)(54906003)(66556008)(66946007)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: DBeHqImJfObXcrQH3r6En2Ja1cXRxkFETBkWd5jhti1352Mlc3Wwy2kpLjuqCHpbe6s4d+JVV+p57AitOB02VqSMGOjF6gsxCD7M4bT1mwfpJixpbLDBFw4HOc+8lpmDB7cOqSe1Ch32rPr8kgKxlFlWOV5T0K6rJhY3dYzI6PdVwwtJLI1lq4fgOZ0K0c0CBXEUve00aHkv59lz0RLpbCuyIK5yYRAJYMJD2eE24ER05sOUjVxseWHaswN/P2/T2xowJZnV3FV1xoZBl7mkHCc66qiwqDAjRab/W05tftOsSFq1aguYzmzLXtbstUA0MMNIztgi/dUfjJfKGx6jnK7/FutTz5lD5BQZeCAOPe+RcEzWhE46zikwcn4UH1qznbTd+vALOIU1UcR6gh/AsKhG9J/+P9sR1L1CwbcWzAxemicmL810uHWEnWZ9fxIGse7kdhJD3XNAzjLWWggL746yyHRfMoxDXOnH6AtMFJNd3WOV07X/mobg3uNJEVllwwTxIOirMJ3veAPGV8Q9agMBq5bSvFv+48I1rqByJ/Ft4LdCOchBcmCJWMKIQ+ai0YwJZK1O2pZzRvHXQ60Yg9qzrM90k83+96WzMHwuxURDWGQm9j40+uHez7thZ4pnY0JfpyF3TwJPMlN1CyvwNhfNegfYIVqi6AMBAe6lGL7EqTjx+DIG0KQGUbtBWGDqLcYbZtioiYe8tCb+2FXpZhpjRiBPN1qmGAaa2UhXv1MaxoXcIe8zaRnqW5yE8wMPXpI7n46dJCItcZ+888yo3jzfa8r8kt3rb46CA1ap2VvHm9jRyxAB5zu4mJpkkfx+Ven5SlJieVydGzwnsAagn+2s8w7dYJNe3K00JVpZamHEcxJIl8Jliq+jqVv77oINMLXlSb53K4ZJU/LxBIEUJn9kDxY6L8v+oqZ7qyRTavQCjUeSvCjhAIZsXspM0KwS4sJIjBGFrbjA0OapVqYHTEwOHYWxel2v4gYplzp5pLhWrt5qNyM3dEX7vkzVYzMW18btk6mDKYJ5rlQ0PBnDht+F5c1dv0+lRmZKYZRFzL6fPHK/n1mttD9IA/0cTsDXoEf1bquMfIuLI0vnieORnJX2QM3eRBRJZVztZM7VAsY479G/aZq4NkiKLm1GRpBD1xuy69DZVqxIWM1jZQy9TJwtlpXNOobeQn4rQ7RKsIxw8DIqbtGXdmYOBg/B8gsmP5X9NR6ymK23OEaWxygS21xYw3lIepaDuL/OYT4fkOr7SD8wQLQfG8dXZqtv6zvkQhR7KKptwaiC7WqtpyXUx0gyZg16rDw6rNOsxvOoRz7+WpsLvRQo+sx9KZZVDdW+WZAIDzIeiqsAkMBTVyzNqXELHEcNDS4mc8F1jGv850DgYi5928Nf37v4HXLYIDJFOTpuhljorwtXosQJ3G7a+vlFi6clLhVHezJ7ZvuYTZwaCRBGrHC77PT4KetUm46fEnLSodAVGaGiIttOqjm9+a3yOLbRD9vQG6SH38av+A4P5yWXshO2npiv3cBh+Cq43EX/+GywMsxZ2fyJrjsx/+mEJXVY/jYZTwaHgzoT9G65L74qq3QgGDW2vVQu/UDDbzZ7R056uPCpv9ikdlSxjwe29n3RATRJA6Q/X1WhNHU= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 3uyE6Be9vWL0WjH1Yb5BKSU7wwSiY6poW81Yf+8soFmeWxWUl8uXE9VGiI5x0dlldg4dMShDDijPvJE23/XXMZREuGcEcdqdyQwJXcl/sRdcUKUVi24sR8JRPkcTM83VTlTBETI6lKIoRmPjPZ/o7umJUvFP0PAtmtD/RGkctwXi+NpEjZcXiuFV2FSCqt67aefH01zATymFyQZjmuZjF5n+wqmdHIzSVxUggFcBPkE+8lz20TrWv3XyEOT7DI8pwbt6mTm4+abmJ9zfAPF4Nf0NiSRCiz+3Zy6cqeg+UCUxA1/yuTJVgfLgINSUVgeXxkXu/6nmFwswymE0UOmx2WHinZMuUx/GkDIT/+jMhk+/I9Zkq6LGHhwJuRpKfFtvA3GHGSMPFjfjr+0hxbKX+m55E88RX0HU8FzExZpQKF3oKDJdmNu8bBZJVatAqa3vtcGi2bMkWYDKhkuI0HflMqTOlKNwWPXBJ5uaAy+9MN/DMy9M1wUTJpOcrG/gMq0AYDyyrgLue7vdY71yEhgIX5Seg+vMxHz9Ojlz5DEV8c71VEbpfMUcfV1ciA/usK/xSg7f3GAOagCNY9tXvUl+BFEzTqmymd+azeDTx1GR43ouL4i8Wxd3qaw9yLKw8+vg5XWGnt47BPPBz/IVAgikUamdxLk1zr09XzXLWYWa9zdzfMSZn1jcPh3vx/Aq5K5r/cKbzi/iNt7Nt6UK4NkekEflYU80cygNZguptZ33fGamnN2hBcaKr/nUxU/NfudHjt558kupBD5F46T36asixoyY5GFK2HPuQiak8IhtYzCD1p02IJEnzBTC7fRT7t39C1Asz6DhWliA7KP5JoxWsmq0gw/qchAhdrsWbr4d9eCCkr2+Pum9RbjJ7K11EaW3 X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 36325b31-dcfa-4d87-1a17-08dbb89f8c9c X-MS-Exchange-CrossTenant-AuthSource: PH8PR10MB6597.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Sep 2023 23:32:40.2795 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 0lnEgldqVaHUcZUMa/e2B9Sh04JVbqXCRSGvbgzDDbd1ebFPhCqJa2RIGsULvUfHl74tWKfp4n3krbrz9zFlL/3/ivPxfqR0nDs2uWJwu2A= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR10MB7758 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.601,FMLib:17.11.176.26 definitions=2023-09-18_11,2023-09-18_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 phishscore=0 malwarescore=0 suspectscore=0 spamscore=0 bulkscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2308100000 definitions=main-2309180203 X-Proofpoint-GUID: KoUwSgA9gFQ7jIcbnJhDVvlYLqH5N0KN X-Proofpoint-ORIG-GUID: KoUwSgA9gFQ7jIcbnJhDVvlYLqH5N0KN Received-SPF: pass client-ip=205.220.177.32; envelope-from=stephen.s.brennan@oracle.com; helo=mx0b-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org The QMP dump API represents the dump format as an enumeration. Add three new enumerators, one for each supported kdump compression, each named "kdump-raw-*". For the HMP command line, rather than adding a new flag corresponding to each format, it seems more human-friendly to add a single flag "-R" to switch the kdump formats to "raw" mode. The choice of "-R" also correlates nicely to the "makedumpfile -R" option, which would serve to reassemble a flattened vmcore. Signed-off-by: Stephen Brennan --- dump/dump-hmp-cmds.c | 21 +++++++++++++++++---- dump/dump.c | 31 ++++++++++++++++++++++++++++++- hmp-commands.hx | 9 +++++++-- qapi/dump.json | 24 ++++++++++++++++++++---- 4 files changed, 74 insertions(+), 11 deletions(-) diff --git a/dump/dump-hmp-cmds.c b/dump/dump-hmp-cmds.c index b038785fee..b428ec33df 100644 --- a/dump/dump-hmp-cmds.c +++ b/dump/dump-hmp-cmds.c @@ -19,6 +19,7 @@ void hmp_dump_guest_memory(Monitor *mon, const QDict *qdict) bool paging = qdict_get_try_bool(qdict, "paging", false); bool zlib = qdict_get_try_bool(qdict, "zlib", false); bool lzo = qdict_get_try_bool(qdict, "lzo", false); + bool raw = qdict_get_try_bool(qdict, "raw", false); bool snappy = qdict_get_try_bool(qdict, "snappy", false); const char *file = qdict_get_str(qdict, "filename"); bool has_begin = qdict_haskey(qdict, "begin"); @@ -40,16 +41,28 @@ void hmp_dump_guest_memory(Monitor *mon, const QDict *qdict) dump_format = DUMP_GUEST_MEMORY_FORMAT_WIN_DMP; } - if (zlib) { - dump_format = DUMP_GUEST_MEMORY_FORMAT_KDUMP_ZLIB; + if (zlib && raw) { + if (raw) { + dump_format = DUMP_GUEST_MEMORY_FORMAT_KDUMP_RAW_ZLIB; + } else { + dump_format = DUMP_GUEST_MEMORY_FORMAT_KDUMP_ZLIB; + } } if (lzo) { - dump_format = DUMP_GUEST_MEMORY_FORMAT_KDUMP_LZO; + if (raw) { + dump_format = DUMP_GUEST_MEMORY_FORMAT_KDUMP_RAW_LZO; + } else { + dump_format = DUMP_GUEST_MEMORY_FORMAT_KDUMP_LZO; + } } if (snappy) { - dump_format = DUMP_GUEST_MEMORY_FORMAT_KDUMP_SNAPPY; + if (raw) { + dump_format = DUMP_GUEST_MEMORY_FORMAT_KDUMP_RAW_SNAPPY; + } else { + dump_format = DUMP_GUEST_MEMORY_FORMAT_KDUMP_SNAPPY; + } } if (has_begin) { diff --git a/dump/dump.c b/dump/dump.c index 10aa2c79e0..55cb6af20b 100644 --- a/dump/dump.c +++ b/dump/dump.c @@ -2090,6 +2090,7 @@ void qmp_dump_guest_memory(bool paging, const char *file, int fd = -1; DumpState *s; bool detach_p = false; + bool kdump_raw = false; if (runstate_check(RUN_STATE_INMIGRATE)) { error_setg(errp, "Dump not allowed during incoming migration."); @@ -2103,6 +2104,27 @@ void qmp_dump_guest_memory(bool paging, const char *file, return; } + /* externally, we represent kdump-raw-* as separate formats, but internally + * they are handled the same, except for the "raw" flag */ + if (has_format) { + switch (format) { + case DUMP_GUEST_MEMORY_FORMAT_KDUMP_RAW_ZLIB: + format = DUMP_GUEST_MEMORY_FORMAT_KDUMP_ZLIB; + kdump_raw = true; + break; + case DUMP_GUEST_MEMORY_FORMAT_KDUMP_RAW_LZO: + format = DUMP_GUEST_MEMORY_FORMAT_KDUMP_LZO; + kdump_raw = true; + break; + case DUMP_GUEST_MEMORY_FORMAT_KDUMP_RAW_SNAPPY: + format = DUMP_GUEST_MEMORY_FORMAT_KDUMP_SNAPPY; + kdump_raw = true; + break; + default: + break; + } + } + /* * kdump-compressed format need the whole memory dumped, so paging or * filter is not supported here. @@ -2166,6 +2188,10 @@ void qmp_dump_guest_memory(bool paging, const char *file, error_setg(errp, QERR_INVALID_PARAMETER, "protocol"); return; } + if (kdump_raw && lseek(fd, 0, SEEK_CUR) == (loff_t) -1) { + error_setg(errp, "kdump-raw formats require a seekable file"); + return; + } if (!dump_migration_blocker) { error_setg(&dump_migration_blocker, @@ -2186,7 +2212,7 @@ void qmp_dump_guest_memory(bool paging, const char *file, dump_state_prepare(s); dump_init(s, fd, has_format, format, paging, has_begin, - begin, length, false, errp); + begin, length, kdump_raw, errp); if (*errp) { qatomic_set(&s->status, DUMP_STATUS_FAILED); return; @@ -2214,15 +2240,18 @@ DumpGuestMemoryCapability *qmp_query_dump_guest_memory_capability(Error **errp) /* kdump-zlib is always available */ QAPI_LIST_APPEND(tail, DUMP_GUEST_MEMORY_FORMAT_KDUMP_ZLIB); + QAPI_LIST_APPEND(tail, DUMP_GUEST_MEMORY_FORMAT_KDUMP_RAW_ZLIB); /* add new item if kdump-lzo is available */ #ifdef CONFIG_LZO QAPI_LIST_APPEND(tail, DUMP_GUEST_MEMORY_FORMAT_KDUMP_LZO); + QAPI_LIST_APPEND(tail, DUMP_GUEST_MEMORY_FORMAT_KDUMP_RAW_LZO); #endif /* add new item if kdump-snappy is available */ #ifdef CONFIG_SNAPPY QAPI_LIST_APPEND(tail, DUMP_GUEST_MEMORY_FORMAT_KDUMP_SNAPPY); + QAPI_LIST_APPEND(tail, DUMP_GUEST_MEMORY_FORMAT_KDUMP_RAW_SNAPPY); #endif if (win_dump_available(NULL)) { diff --git a/hmp-commands.hx b/hmp-commands.hx index 2cbd0f77a0..69eaa1d6a6 100644 --- a/hmp-commands.hx +++ b/hmp-commands.hx @@ -1085,14 +1085,16 @@ ERST { .name = "dump-guest-memory", - .args_type = "paging:-p,detach:-d,windmp:-w,zlib:-z,lzo:-l,snappy:-s,filename:F,begin:l?,length:l?", - .params = "[-p] [-d] [-z|-l|-s|-w] filename [begin length]", + .args_type = "paging:-p,detach:-d,windmp:-w,zlib:-z,lzo:-l,snappy:-s,raw:-R,filename:F,begin:l?,length:l?", + .params = "[-p] [-d] [-z|-l|-s|-w] [-R] filename [begin length]", .help = "dump guest memory into file 'filename'.\n\t\t\t" "-p: do paging to get guest's memory mapping.\n\t\t\t" "-d: return immediately (do not wait for completion).\n\t\t\t" "-z: dump in kdump-compressed format, with zlib compression.\n\t\t\t" "-l: dump in kdump-compressed format, with lzo compression.\n\t\t\t" "-s: dump in kdump-compressed format, with snappy compression.\n\t\t\t" + "-R: when using kdump (-z, -l, -s), use raw rather than makedumpfile-flattened\n\t\t\t" + " format\n\t\t\t" "-w: dump in Windows crashdump format (can be used instead of ELF-dump converting),\n\t\t\t" " for Windows x86 and x64 guests with vmcoreinfo driver only.\n\t\t\t" "begin: the starting physical address.\n\t\t\t" @@ -1115,6 +1117,9 @@ SRST dump in kdump-compressed format, with lzo compression. ``-s`` dump in kdump-compressed format, with snappy compression. + ``-R`` + when using kdump (-z, -l, -s), use raw rather than makedumpfile-flattened + format ``-w`` dump in Windows crashdump format (can be used instead of ELF-dump converting), for Windows x64 guests with vmcoreinfo driver only diff --git a/qapi/dump.json b/qapi/dump.json index 4ae1f722a9..5cbc237ad9 100644 --- a/qapi/dump.json +++ b/qapi/dump.json @@ -15,11 +15,23 @@ # # @elf: elf format # -# @kdump-zlib: kdump-compressed format with zlib-compressed +# @kdump-zlib: makedumpfile flattened, kdump-compressed format with zlib +# compression # -# @kdump-lzo: kdump-compressed format with lzo-compressed +# @kdump-lzo: makedumpfile flattened, kdump-compressed format with lzo +# compression # -# @kdump-snappy: kdump-compressed format with snappy-compressed +# @kdump-snappy: makedumpfile flattened, kdump-compressed format with snappy +# compression +# +# @kdump-raw-zlib: raw assembled kdump-compressed format with zlib compression +# (since 8.2) +# +# @kdump-raw-lzo: raw assembled kdump-compressed format with lzo compression +# (since 8.2) +# +# @kdump-raw-snappy: raw assembled kdump-compressed format with snappy +# compression (since 8.2) # # @win-dmp: Windows full crashdump format, can be used instead of ELF # converting (since 2.13) @@ -27,7 +39,11 @@ # Since: 2.0 ## { 'enum': 'DumpGuestMemoryFormat', - 'data': [ 'elf', 'kdump-zlib', 'kdump-lzo', 'kdump-snappy', 'win-dmp' ] } + 'data': [ + 'elf', + 'kdump-zlib', 'kdump-lzo', 'kdump-snappy', + 'kdump-raw-zlib', 'kdump-raw-lzo', 'kdump-raw-snappy', + 'win-dmp' ] } ## # @dump-guest-memory: