From patchwork Tue Sep 6 08:31:38 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dominique Martinet X-Patchwork-Id: 1674571 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=googlegroups.com (client-ip=2607:f8b0:4864:20::e3e; helo=mail-vs1-xe3e.google.com; envelope-from=swupdate+bncbcwivbv7sugrb5ek3smamgqeyc2jvuy@googlegroups.com; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlegroups.com header.i=@googlegroups.com header.a=rsa-sha256 header.s=20210112 header.b=j8WcVKSV; dkim-atps=neutral Received: from mail-vs1-xe3e.google.com (mail-vs1-xe3e.google.com [IPv6:2607:f8b0:4864:20::e3e]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4MMJXG60zlz1yhd for ; Tue, 6 Sep 2022 18:31:57 +1000 (AEST) Received: by mail-vs1-xe3e.google.com with SMTP id q16-20020a056102205000b00390e8001d29sf2611034vsr.9 for ; Tue, 06 Sep 2022 01:31:57 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1662453109; cv=pass; d=google.com; s=arc-20160816; b=VKkPcuYihfttPE/Jm/6FgYfNoMTRQbupy1pOSfaTcRnumHFR+U9bniOFz66BGCffo8 3nMOvvbHAnR+Iz8oo42HXUT9RRX/6EFX/1lfSPRSge6tfNY+jRukAZJE/+uvncsfqock 6TmVWkgzGGzbVvqAkemXAAdlISrz6JkXZacR0gd6E6m+QQTeLwSh+mj6CQkOL9NSFL4Y YiofVyJQdQsWwezvFYBV66kPAWWtvt98x6gpNC2vqVqCbDAdu7UvY1GS27zwrOM2Tpl+ OduLfV8O67035TZeSi2G93jb7vj7hTv32bjaBZ94nsgMWKZRfSnKEP0KC1ix9EnazKBE G5KA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:message-id:date :subject:cc:to:from:sender:dkim-signature; bh=v6P5HMlEQne+vk41IZJ2rkJt/24k+N/ZXCPeSYvQiX4=; b=He9/eU729SFvf5/DPdX3BAYqYh/l6SOQkpeVaZjkRK80QreLSZZ7yOfN4b4u8QMcfG 3u25sVNgVTD8qjRJJGeHI2Jy2SoG0fRhluYrD5VBP/u9UK3IgvXJpBusyixDIcw4dupx jsI4w/PrAE1sMpnT7OKrKgxT6Dghl1OkS/90Frh5SOkUCnf6AA8icZQsTp0RBPr4bF/t Vufb6sd0idABcqqJP7Sg/9OB7crEICEhiwRaOUNGiPMniHQfF5HD1M7EM/N/l0WkCyKY c5aWZPS4GnscfOYnKawX8m94z9uAt6NzbdMaiYUvzjEpDORWdhnUShoty4RJYhKuLWxu I2Ig== ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=pass (google.com: domain of dominique.martinet@atmark-techno.com designates 13.115.124.170 as permitted sender) smtp.mailfrom=dominique.martinet@atmark-techno.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20210112; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:message-id:date:subject:cc:to:from :sender:from:to:cc:subject:date; bh=v6P5HMlEQne+vk41IZJ2rkJt/24k+N/ZXCPeSYvQiX4=; b=j8WcVKSVlk+6hXf1jvxomGbIS+KPmKlx8A9OM/rvUVTAihPA4JACoxoV4PnSA1es+q rToDpurUoGdFrFDpJmvs0JG+48JKc3FFpeacALWMeLQ0h/8bbkX5l9E/mcStyJPc+Q7r LVMx1T+GIv1+zsfIjXoYQl7SPkHPMJeiKW8QbeGe7jPBQ1GYxUUhXVMUVPMEtQ5jgcKr pusrSwlCyws/sN4BDD5WRlfjpeE4wDFmscgsRFXG+VthMd4lPj5JE7q7uGtqfNdlRc2i kDXiDOD5lG8FlWOHOolBTltZDN4lvZ+y8XaRMnPAtQ7AR4QZQwOyQ0wToxeWSWiJxK45 PajA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :message-id:date:subject:cc:to:from:x-gm-message-state:sender:from :to:cc:subject:date; bh=v6P5HMlEQne+vk41IZJ2rkJt/24k+N/ZXCPeSYvQiX4=; b=hgO+xp8jI4XPZ07h48dpwg+XfB6jJ7N6aoHXQN0yCUqXGzVPT6rQ2TeP+32OAnqB+n IDeRMf0/0PXhGZQPVPevpg1AaJPDdrsf/1k7nlrAcV03yyRC38DVhST6QdKgRCWtSd7J bTvqAaC2MobMDtAnIcOg2cMt/OYts1jveYybrllONGiz2aWJ4WgUm5eZqhp2t1D6DJ52 jjQaxYunaZd8SZoFiRY/A6N26hpfIAvhERdhHGYzzP399QTjxtuZcX8TAJqf+AUOPMg4 REjHj4/6nrXcgLVK1d9g9lc8kgHeUfrN1NrxLjG3VjSlMRBJXIoGrYYV/KfsYfj/4Eet TwXg== Sender: swupdate@googlegroups.com X-Gm-Message-State: ACgBeo2RwGOtw//5uiDs6dYALjBTbzBC71Mxw0erC3LgLKRkVtYnfpKb ogSbpKYDbYarkGiqlIkKzk8= X-Google-Smtp-Source: AA6agR6/huLEf+B3Hk0NySn9aMQx0IvqqtuhBfllkn6ZoyZgWJlNI3rE74WN5uFed1dtaO9gpam34Q== X-Received: by 2002:a67:d809:0:b0:397:6317:9f76 with SMTP id e9-20020a67d809000000b0039763179f76mr838844vsj.42.1662453108960; Tue, 06 Sep 2022 01:31:48 -0700 (PDT) X-BeenThere: swupdate@googlegroups.com Received: by 2002:a67:c50b:0:b0:390:72fa:8274 with SMTP id e11-20020a67c50b000000b0039072fa8274ls2127721vsk.11.-pod-prod-gmail; Tue, 06 Sep 2022 01:31:48 -0700 (PDT) X-Received: by 2002:a67:6d06:0:b0:38c:9cb9:41aa with SMTP id i6-20020a676d06000000b0038c9cb941aamr15413244vsc.37.1662453108106; Tue, 06 Sep 2022 01:31:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1662453108; cv=none; d=google.com; s=arc-20160816; b=gyGcAFIWkH0c2S5tffl8nF+sH3QZCgGQoTQavZTvKkw5EH+Ry7591Vr+IuY6+eDuqT fYxUcYXhYDsPv3VHPUDgAVn1T6pdg+r+at12KeGvRhe/uWSW9Eix2ipwZlX86wMx/xgr pbZcSEuBGPfDBc+WKbbGIB9jSjZdmkHA1T6cIsfdeYwcc4u8M+ET3TTlc8pGHNlJwnY+ tZFteEgrmjy7Rdc5+2pSCZC1sUGv11CQJ+N+xAM4pWeNmUCqnORtrrFGXLYofwEcMo4p Q2l1OHZcOfvT0H0s6WWnsFX1QmmV9ETIds5ohfwPoSYxFpFo+o7a/MFdTXy42NcxtVF2 HK6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from; bh=/l0glRf3SUEYxuipsfnmMmHLKo1f80BtuXkiRNKe2KI=; b=lL140ibT+tSPd0qYKvaq510POWKJg25ED8RY2X0CsKYZ6sC4ScZC1e2k+IEy+FOipS Gnv4sSierjYCKrIkyOKCkdcNlJrUEiWZH8xVZ/DCsew2eYthzF1fp0ZcB/95EoLEwcft AVzhoM8nx7v7NJRT1sReKhSoBRdZMq/KSSlBy0bnsNYxmxkxOnoIenCEwIQkUD5sKDV8 AcwP5TyvZo+k+vF2c4TZ7PNU1Lm/z32XB0OjOI5kLD0MM/mdRAKComfmc1yiIQX7yt2Q 6TfufMDRZYGuzB1YhFHOxfBGB+SMAZKL9Z1AhkniIu2ODeTer/UZB7unU771rRm5PnaJ cs3w== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of dominique.martinet@atmark-techno.com designates 13.115.124.170 as permitted sender) smtp.mailfrom=dominique.martinet@atmark-techno.com Received: from gw.atmark-techno.com (gw.atmark-techno.com. [13.115.124.170]) by gmr-mx.google.com with ESMTPS id h20-20020a05610202d400b00390ed66f76asi619938vsh.1.2022.09.06.01.31.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Sep 2022 01:31:47 -0700 (PDT) Received-SPF: pass (google.com: domain of dominique.martinet@atmark-techno.com designates 13.115.124.170 as permitted sender) client-ip=13.115.124.170; Received: from gw.atmark-techno.com (localhost [127.0.0.1]) by gw.atmark-techno.com (Postfix) with ESMTP id 4370861BFA for ; Tue, 6 Sep 2022 17:31:45 +0900 (JST) Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by gw.atmark-techno.com (Postfix) with ESMTPS id 21DB161B44 for ; Tue, 6 Sep 2022 17:31:45 +0900 (JST) Received: by mail-pf1-f199.google.com with SMTP id s13-20020a056a00194d00b005385093da2dso5425088pfk.13 for ; Tue, 06 Sep 2022 01:31:45 -0700 (PDT) X-Received: by 2002:a17:902:8307:b0:172:e611:491f with SMTP id bd7-20020a170902830700b00172e611491fmr52615285plb.111.1662453104239; Tue, 06 Sep 2022 01:31:44 -0700 (PDT) X-Received: by 2002:a17:902:8307:b0:172:e611:491f with SMTP id bd7-20020a170902830700b00172e611491fmr52615269plb.111.1662453104000; Tue, 06 Sep 2022 01:31:44 -0700 (PDT) Received: from pc-zest.atmarktech (76.125.194.35.bc.googleusercontent.com. [35.194.125.76]) by smtp.gmail.com with ESMTPSA id y8-20020a17090322c800b0016f85feae65sm9149223plg.87.2022.09.06.01.31.43 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Sep 2022 01:31:43 -0700 (PDT) Received: from martinet by pc-zest.atmarktech with local (Exim 4.96) (envelope-from ) id 1oVTzi-00DqIV-1Q; Tue, 06 Sep 2022 17:31:42 +0900 From: Dominique Martinet To: swupdate@googlegroups.com Cc: Dominique Martinet Subject: [swupdate] [PATCH] archive_handler: clarify error on failure Date: Tue, 6 Sep 2022 17:31:38 +0900 Message-Id: <20220906083138.3299235-1-dominique.martinet@atmark-techno.com> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 X-Original-Sender: dominique.martinet@atmark-techno.com X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of dominique.martinet@atmark-techno.com designates 13.115.124.170 as permitted sender) smtp.mailfrom=dominique.martinet@atmark-techno.com Precedence: list Mailing-list: list swupdate@googlegroups.com; contact swupdate+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: swupdate@googlegroups.com X-Google-Group-Id: 605343134186 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , When not failing to extract a file the archive handler would just print the generic libarchive error, which is not helpful on its own like this: [ERROR] : SWUPDATE failed [0] ERROR : archive_write_data_block(): Write failed for 'somepath' libarchive also keeps the errno at the time of the error so also print the more helpful errno info on that line, for example: [ERROR] : SWUPDATE failed [0] ERROR : archive_write_data_block(): Write failed for 'big': No space left on device Signed-off-by: Dominique Martinet --- Took me a while to understand why extraction failed for one of our customers, that should hopefully make it more obvious that they were just trying to fit too much data in a tiny space. The error lines are getting prett long though, if you have a suggestion... handlers/archive_handler.c | 44 ++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/handlers/archive_handler.c b/handlers/archive_handler.c index ef8989f3f194..e3a1463d941f 100644 --- a/handlers/archive_handler.c +++ b/handlers/archive_handler.c @@ -57,18 +57,21 @@ copy_data(struct archive *ar, struct archive *aw, struct archive_entry *entry) return (ARCHIVE_OK); if (r != ARCHIVE_OK) { if (r == ARCHIVE_WARN) { - WARN("archive_read_next_header(): %s for '%s'", - archive_error_string(ar), archive_entry_pathname(entry)); + WARN("archive_read_next_header(): %s for '%s': %s", + archive_error_string(ar), archive_entry_pathname(entry), + strerror(archive_errno(ar))); } else { - ERROR("archive_read_data_block(): %s for '%s'", - archive_error_string(ar), archive_entry_pathname(entry)); + ERROR("archive_read_data_block(): %s for '%s': %s", + archive_error_string(ar), archive_entry_pathname(entry), + strerror(archive_errno(ar))); return (r); } } r = archive_write_data_block(aw, buff, size, offset); if (r != ARCHIVE_OK) { - ERROR("archive_write_data_block(): %s for '%s'", - archive_error_string(aw), archive_entry_pathname(entry)); + ERROR("archive_write_data_block(): %s for '%s': %s", + archive_error_string(aw), archive_entry_pathname(entry), + strerror(archive_errno(aw))); return (r); } } @@ -140,8 +143,8 @@ extract(void *p) } if ((r = archive_read_open_filename(a, FIFO, 4096))) { - ERROR("archive_read_open_filename(): %s %d", - archive_error_string(a), r); + ERROR("archive_read_open_filename(): %s %d: %s", + archive_error_string(a), r, strerror(archive_errno(a))); goto out; } for (;;) { @@ -150,11 +153,13 @@ extract(void *p) if (r == ARCHIVE_EOF) break; if (r == ARCHIVE_WARN) { - WARN("archive_read_next_header(): %s for '%s'", - archive_error_string(a), archive_entry_pathname(entry)); + WARN("archive_read_next_header(): %s for '%s': %s", + archive_error_string(a), archive_entry_pathname(entry), + strerror(archive_errno(a))); } else { - ERROR("archive_read_next_header(): %s", - archive_error_string(a)); + ERROR("archive_read_next_header(): %s: %s", + archive_error_string(a), + strerror(archive_errno(a))); goto out; } } @@ -164,8 +169,9 @@ extract(void *p) r = archive_write_header(ext, entry); if (r != ARCHIVE_OK) { - ERROR("archive_write_header(): %s", - archive_error_string(ext)); + ERROR("archive_write_header(): %s: %s", + archive_error_string(ext), + strerror(archive_errno(ext))); goto out; } @@ -175,8 +181,9 @@ extract(void *p) r = archive_write_finish_entry(ext); if (r != ARCHIVE_OK) { - ERROR("archive_write_finish_entry(): %s for '%s'", - archive_error_string(ext), archive_entry_pathname(entry)); + ERROR("archive_write_finish_entry(): %s for '%s': %s", + archive_error_string(ext), archive_entry_pathname(entry), + strerror(archive_errno(ext))); goto out; } @@ -188,8 +195,9 @@ out: if (ext) { r = archive_write_free(ext); if (r) { - ERROR("archive_write_free(): %s %d", - archive_error_string(a), r); + ERROR("archive_write_free(): %s %d: %s", + archive_error_string(a), r, + strerror(archive_errno(a))); exitval = -EFAULT; } }