From patchwork Fri Feb 5 14:38:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1436684 X-Patchwork-Delegate: lukma@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=secospa.onmicrosoft.com header.i=@secospa.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-secospa-onmicrosoft-com header.b=gT5cjU0v; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DXJ3r3PjXz9sRR for ; Sat, 6 Feb 2021 01:40:07 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id EF2A882AA9; Fri, 5 Feb 2021 15:39:33 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=secospa.onmicrosoft.com header.i=@secospa.onmicrosoft.com header.b="gT5cjU0v"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 1BC4482A89; Fri, 5 Feb 2021 15:39:26 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FORGED_SPF_HELO,MSGID_FROM_MTA_HEADER,SPF_HELO_PASS autolearn=no autolearn_force=no version=3.4.2 Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on0609.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0e::609]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id D993482A73 for ; Fri, 5 Feb 2021 15:39:21 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gpx5hPs+0G4OPcNOThafy6VH0UMUQXHa0lvpkHvTWBaOcFQT78IUVR9Smep4GMGXiajJVtDYfxmrFbf8A3SMz+sb2GumXME+bhf4QwrEOqTqqlEPiCB2oIiKgYsSz4CyqV+HuLyxuVn8mzJawv9WN8gX7VtEJZ4Vq4/Q6FXuYhhVW/zOg1ydqNwOx80dwFDaN+FKjcLZ+Rtaq/UUm7USTaX0+k+MwDqzdSfCUHQJtrXNtiHiqHTg1vPuzxoTYoqKaAK7L4UCfQLnFybaeBdj6+H4/fvrSxzxn2qgJtHlIJL1k/8NTPf6BlLOuU9nI7tlaiJ5rNX8hRYn+nnfkROOAg== 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-SenderADCheck; bh=de7eLX1QFSDlOeHJdFikJ+rGlysz1vv+vMTVyPlsmgk=; b=EQtEiJ8KiYgKnamsN6Vcz5BdS8ag7H1WYKlF+j2DGxe/0FiR81aI7a1iEYk/4iA4husv3Kv5P5fu4AJAAxEGQ+MG/F34+XuxWSIudHumDl8Zdkqnl728bsy/q7GG9/UlqnbuCpd0RsALvQGbwBL8qXk/jKiNawO51oGJFM7GmW/fvAFpdvV6fx5QMAelRdPRGs64mqhfbFPJ3BH8uNWaLzf2I6uDrc7mY8Um2dDx/hMZUDtPnmUHTOQMsYkCozXJht5xSbugI8XnzadACKOM1CJqmnYJSj099cmUL0WczVIDeBfx97MxUHITDzp1CcLcUP/JDRZOT+dcBJS2mYOyLQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=secospa.onmicrosoft.com; s=selector2-secospa-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=de7eLX1QFSDlOeHJdFikJ+rGlysz1vv+vMTVyPlsmgk=; b=gT5cjU0vmqzGnusLcn6pKQ5eRmDlvlxN76P3/sdRX5NEzYfXz7GO0KyWipJ0A8Y6pLOrvJTad4Ycczle6RUmLbbi6TMNPAcPvoyFNutyVx/lMYQslO0cdNWVzrwNEpx8sNbfOTuXVXbEEhzpSe88ptcdCfOnGK8cLkZsnszamcg= Authentication-Results: lists.denx.de; dkim=none (message not signed) header.d=none;lists.denx.de; dmarc=none action=none header.from=seco.com; Received: from AM9PR03MB7251.eurprd03.prod.outlook.com (2603:10a6:20b:26e::16) by AM4PR0302MB2787.eurprd03.prod.outlook.com (2603:10a6:200:8e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3825.23; Fri, 5 Feb 2021 14:39:20 +0000 Received: from AM9PR03MB7251.eurprd03.prod.outlook.com ([fe80::a8f2:7dd:46e5:8526]) by AM9PR03MB7251.eurprd03.prod.outlook.com ([fe80::a8f2:7dd:46e5:8526%6]) with mapi id 15.20.3825.019; Fri, 5 Feb 2021 14:39:20 +0000 From: Sean Anderson To: u-boot@lists.denx.de Cc: Simon Glass , Lukasz Majewski , Sean Anderson , Anastasiia Lukianenko , Andrii Anisov , Heinrich Schuchardt , Oleksandr Andrushchenko Subject: [PATCH v5 03/10] part: Give several functions more useful return values Date: Fri, 5 Feb 2021 09:38:55 -0500 Message-Id: <20210205143902.1819189-4-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210205143902.1819189-1-sean.anderson@seco.com> References: <20210205143902.1819189-1-sean.anderson@seco.com> X-Originating-IP: [50.195.82.171] X-ClientProxiedBy: BL1PR13CA0001.namprd13.prod.outlook.com (2603:10b6:208:256::6) To AM9PR03MB7251.eurprd03.prod.outlook.com (2603:10a6:20b:26e::16) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from plantagenet.inhand.com (50.195.82.171) by BL1PR13CA0001.namprd13.prod.outlook.com (2603:10b6:208:256::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3846.15 via Frontend Transport; Fri, 5 Feb 2021 14:39:19 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b3a1e990-8da6-4c74-9a58-08d8c9e3d2e4 X-MS-TrafficTypeDiagnostic: AM4PR0302MB2787: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:883; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: QX5S2hbREAccxLB+aZDBKIXv7DD8tCF8GF6nGxVYUIJDSIwwqNbkLy8NKL+gaUTAALX7jW2SYNC+BrQhgWFessQxGYwLMbl549sw9Jzg/3BVobLhVFa9beaU6+z+CDkFq5jeJk68zuYXLExgifP7PPqURMGrZKW9FRumpya1rKzgQmi6SnW6ofgIFutUwjDGSLG78w87GewX2zwghwnBdUgdoJX7Al3voYpCVL4OPQRqR3BT5Ju77OVxnxS6zDWPiF0sbldDC61Bj6gn7kDTilrf+f/FrRbbuVzdswK+Tbhe4uay07TBInSlUm7casq7GL0cPoGpSfdFsuYt/Z3rpnMFs3FAz00oisZkU43xqTCbELrCWNoMRSSLPwRY1aUDIgnxqxawoPDq8NutMNn2mhY4NCt7gdWIpk0SM18ZSbg1EBL6/5wcx6v2Pb3OiQ5ZQiyJ4S5nTCR3y193pWbBEP2hE8Bw8cCWBFiLbzzDZwvhhiG+FNxzV9jKBbpjeGkNIRsWhdOgCVo+nRFFt6/uZw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM9PR03MB7251.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(396003)(39840400004)(136003)(346002)(376002)(366004)(956004)(6666004)(16526019)(6512007)(1076003)(478600001)(316002)(6506007)(26005)(54906003)(66946007)(52116002)(5660300002)(66476007)(86362001)(8936002)(2906002)(186003)(36756003)(8676002)(6486002)(83380400001)(6916009)(2616005)(4326008)(66556008)(44832011); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: FfqTJoFOCnGpUTFvlfDY1fd2Zqfl53nps9dKYGQXijj49hGfXTXbqPAkpQEDa1HwrCljvaAePWSDj28nbY5eAQbxz+yMyjSiBHOZIpFr3CRC8L73fR7KZrVQ5pxsQ5wG53HemwsRDFrJtXIHAVtRBW/PScGqk9nYgA5pz6ZYiMXfHFhQy14qsgocUXhw3vEYO6NvEtf4pehqBYozDfbp5XVWpaOXqqIBGi4zwEMyOfs4f3hWn4VDHxoEtglD6nHXNTJP/C15t4EsJ0Fq7rUyhXfCyb26LWisxA3faWH65Su4jrh3mE9WBnYBNed8oCYid2PBmCPYLw+5efCImR1RK0ERu10+va7mlke+7iYK9ku3R+uXw5erazZbVvMNVJrDxZzJawvfy32opguHFoHn0Uey2o5Idh+9KsoAPLbDQMLvakDbV9S9NvU39pD5bHfVVDAposg6O3/JV0qYeEPVvwCfxHj16asGNokzbXeeD3gdvuzIgWXOYeaI4gAhICP5oHlyhKTR5UI+T2arATlnBPLaeejfReh0ZjtbJziLtcZ42wNxGca4LYc6RGOsgxTqF+NNPhRr8iLORVG2O9ao0xPfRcz4vNlPYV0+oHVIQ3PJZeGTHuPpo964Sov1uVvNnqTp7eFbsqsRNFt3eC9TZhN20UFuUfySpPD8TTXUOha01+JsLoI52cGHvGkDk3nDrRFU1/bvdjr8r7TTG8ahxGN+SHweIvCw/GkYAI2FRk5Nb47wE0Yqf4cXTOycU70h6Av6OEuugcG7t4NUxktki/Tzx3zEOAPMuuhxk+74MWZyK/zVwwjR+umJ2FSXq58NE125UsfEJQlyvXTumjIzHLoT3zMVJ6dQUrMiKcmaHA3/zQC+5TOgTWkjOxbr7AXIQMTCOSW3LQTAUdQfe5jjZL5mXBIEhB/otavcZeH5GZMFcPe5eT3wjzmFjJkmcxrBT8ZdwX2KczxaEo02Gk8X3YwBvTrLqg3VgiJF4EMFkn157xStynbi1m9C1wjjhIkEhfmYktuj9WfjxEvp73kgcGbho71UfejKAcGaXPI4Eb7muNW5t2TDtALq0dxNbNZwEV9OA7x9TqMw8BeBU22onz8PAnKQquVjVfDfNo067d0/FqcTVD70awLq0tJ6MUQhCNK04wg5tCz9DxFyu6puXwAXUEN8uZtIzqob9arqlxL74glnZ2HpOuo76AUPWvEdIzxzcv67b5ZP1zSryflrjuNksiYz7Duo/GyZVMuGwm6t5ei56GaG727ep/tk/nGGVDfcBRUNTPNp8eHQMAFSC5fqRqgLV/I7g05nBSmBfCXdZ1qp/exMZfE2+v0AePkc X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: b3a1e990-8da6-4c74-9a58-08d8c9e3d2e4 X-MS-Exchange-CrossTenant-AuthSource: AM9PR03MB7251.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2021 14:39:20.6906 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: jvYNdHdR1ejEQqWQpyDChdPxNqzRtWvm4Cjpl/kR32n4IEfcXVMpnMGWqU5HDoUgIZT9mGJl8f3zoFmwBVkT7A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR0302MB2787 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de X-Virus-Status: Clean Several functions in disk/part.c just return -1 on error. This makes them return different errnos for different failures. This helps callers differentiate between failures, even if they cannot read stdout. Signed-off-by: Sean Anderson Reviewed-by: Simon Glass --- (no changes since v1) disk/part.c | 50 ++++++++++++++++++++++++++++---------------------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/disk/part.c b/disk/part.c index b69fd345f3..5e354e256f 100644 --- a/disk/part.c +++ b/disk/part.c @@ -354,7 +354,7 @@ int part_get_info(struct blk_desc *dev_desc, int part, } #endif /* CONFIG_HAVE_BLOCK_DEVICE */ - return -1; + return -ENOENT; } int part_get_info_whole_disk(struct blk_desc *dev_desc, @@ -416,7 +416,7 @@ int blk_get_device_by_str(const char *ifname, const char *dev_hwpart_str, *dev_desc = get_dev_hwpart(ifname, dev, hwpart); if (!(*dev_desc) || ((*dev_desc)->type == DEV_TYPE_UNKNOWN)) { debug("** Bad device %s %s **\n", ifname, dev_hwpart_str); - dev = -ENOENT; + dev = -ENODEV; goto cleanup; } @@ -440,7 +440,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str, struct blk_desc **dev_desc, struct disk_partition *info, int allow_whole_dev) { - int ret = -1; + int ret; const char *part_str; char *dup_str = NULL; const char *dev_str; @@ -482,7 +482,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str, if (0 == strcmp(ifname, "ubi")) { if (!ubifs_is_mounted()) { printf("UBIFS not mounted, use ubifsmount to mount volume first!\n"); - return -1; + return -EINVAL; } *dev_desc = NULL; @@ -504,6 +504,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str, /* If still no dev_part_str, it's an error */ if (!dev_part_str) { printf("** No device specified **\n"); + ret = -ENODEV; goto cleanup; } @@ -520,8 +521,10 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str, /* Look up the device */ dev = blk_get_device_by_str(ifname, dev_str, dev_desc); - if (dev < 0) + if (dev < 0) { + ret = dev; goto cleanup; + } /* Convert partition ID string to number */ if (!part_str || !*part_str) { @@ -538,6 +541,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str, if (*ep || (part == 0 && !allow_whole_dev)) { printf("** Bad partition specification %s %s **\n", ifname, dev_part_str); + ret = -ENOENT; goto cleanup; } } @@ -551,6 +555,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str, if (!(*dev_desc)->lba) { printf("** Bad device size - %s %s **\n", ifname, dev_str); + ret = -EINVAL; goto cleanup; } @@ -562,6 +567,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str, if ((part > 0) || (!allow_whole_dev)) { printf("** No partition table - %s %s **\n", ifname, dev_str); + ret = -EPROTONOSUPPORT; goto cleanup; } @@ -630,7 +636,6 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str, *info = tmpinfo; } else { printf("** No valid partitions found **\n"); - ret = -1; goto cleanup; } } @@ -638,7 +643,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str, printf("** Invalid partition type \"%.32s\"" " (expect \"" BOOT_PART_TYPE "\")\n", info->type); - ret = -1; + ret = -EINVAL; goto cleanup; } @@ -674,7 +679,7 @@ int part_get_info_by_name_type(struct blk_desc *dev_desc, const char *name, } } - return -1; + return -ENOENT; } int part_get_info_by_name(struct blk_desc *dev_desc, const char *name, @@ -704,7 +709,7 @@ static int part_get_info_by_dev_and_name(const char *dev_iface, { char *ep; const char *part_str; - int dev_num; + int dev_num, ret; part_str = strchr(dev_part_str, '#'); if (!part_str || part_str == dev_part_str) @@ -720,13 +725,12 @@ static int part_get_info_by_dev_and_name(const char *dev_iface, *dev_desc = blk_get_dev(dev_iface, dev_num); if (!*dev_desc) { printf("Could not find %s %d\n", dev_iface, dev_num); - return -EINVAL; + return -ENODEV; } - if (part_get_info_by_name(*dev_desc, part_str, part_info) < 0) { + ret = part_get_info_by_name(*dev_desc, part_str, part_info); + if (ret < 0) printf("Could not find \"%s\" partition\n", part_str); - return -EINVAL; - } - return 0; + return ret; } int part_get_info_by_dev_and_name_or_num(const char *dev_iface, @@ -734,21 +738,23 @@ int part_get_info_by_dev_and_name_or_num(const char *dev_iface, struct blk_desc **dev_desc, struct disk_partition *part_info) { + int ret; + /* Split the part_name if passed as "$dev_num#part_name". */ - if (!part_get_info_by_dev_and_name(dev_iface, dev_part_str, - dev_desc, part_info)) - return 0; + ret = part_get_info_by_dev_and_name(dev_iface, dev_part_str, + dev_desc, part_info); + if (ret >= 0) + return ret; /* * Couldn't lookup by name, try looking up the partition description * directly. */ - if (blk_get_device_part_str(dev_iface, dev_part_str, - dev_desc, part_info, 1) < 0) { + ret = blk_get_device_part_str(dev_iface, dev_part_str, + dev_desc, part_info, 1); + if (ret < 0) printf("Couldn't find partition %s %s\n", dev_iface, dev_part_str); - return -EINVAL; - } - return 0; + return ret; } void part_set_generic_name(const struct blk_desc *dev_desc,