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 X-Spam-Level: X-Spam-Status: No, score=-5.4 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,NICE_REPLY_A, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9F2B4C433DB for ; Fri, 5 Feb 2021 14:28:56 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DD6C2650DB for ; Fri, 5 Feb 2021 14:28:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DD6C2650DB Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:60168 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l826Q-0000Uh-RP for qemu-devel@archiver.kernel.org; Fri, 05 Feb 2021 09:28:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:38334) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l824z-0007oQ-0c for qemu-devel@nongnu.org; Fri, 05 Feb 2021 09:27:25 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:38000) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1l824x-0003GW-54 for qemu-devel@nongnu.org; Fri, 05 Feb 2021 09:27:24 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1612535242; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=PFQwa8EwC9d+rPLKw6uOpUjPPKw/W+RgVA9XR+7QYO4=; b=NYdJ0ZvDIkQfxJPgh6aouXqfgDUgxpJDwG/4c8RlPHnPSB1M7djzRmz3BIt9Re7YO9NMcb dq49vTez9CtTqwesDA9shcOCgPzL/BbxVhYXmd2SUICu+4AzZIfB1F1+8/mYUrbQTiUpPp Lb3oqnixkcGn9max5RE/o0hcDFkXfA4= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-212-_uI0z5i0M2i86mzpg3qCew-1; Fri, 05 Feb 2021 09:27:17 -0500 X-MC-Unique: _uI0z5i0M2i86mzpg3qCew-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 924E5107ACC7; Fri, 5 Feb 2021 14:27:16 +0000 (UTC) Received: from [10.3.112.253] (ovpn-112-253.phx2.redhat.com [10.3.112.253]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 60C0919C47; Fri, 5 Feb 2021 14:27:15 +0000 (UTC) To: =?UTF-8?Q?Daniel_P=2e_Berrang=c3=a9?= References: <20210204190708.1306296-1-eblake@redhat.com> <20210204190708.1306296-2-eblake@redhat.com> <20210205110206.GD908621@redhat.com> From: Eric Blake Organization: Red Hat, Inc. Subject: Re: [PATCH 1/3] utils: Improve qemu_strtosz() to have 64 bits of precision Message-ID: <1e2a3fbf-b501-403e-d472-3b114c6b18ea@redhat.com> Date: Fri, 5 Feb 2021 08:27:14 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.0 MIME-Version: 1.0 In-Reply-To: <20210205110206.GD908621@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=eblake@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=63.128.21.124; envelope-from=eblake@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -34 X-Spam_score: -3.5 X-Spam_bar: --- X-Spam_report: (-3.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.352, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, NICE_REPLY_A=-0.33, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, rjones@redhat.com, tao3.xu@intel.com, armbru@redhat.com, qemu-devel@nongnu.org, Max Reitz Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" On 2/5/21 5:02 AM, Daniel P. Berrangé wrote: >> /* >> - * Convert string to bytes, allowing either B/b for bytes, K/k for KB, >> - * M/m for MB, G/g for GB or T/t for TB. End pointer will be returned >> - * in *end, if not NULL. Return -ERANGE on overflow, and -EINVAL on >> - * other error. >> + * Convert size string to bytes. >> + * >> + * Allow either B/b for bytes, K/k for KB, M/m for MB, G/g for GB or >> + * T/t for TB, with scaling based on @unit, and with @default_suffix >> + * implied if no explicit suffix was given. >> + * >> + * The end pointer will be returned in *end, if not NULL. If there is >> + * no fraction, the input can be decimal or hexadecimal; if there is a >> + * fraction, then the input must be decimal and there must be a suffix >> + * (possibly by @default_suffix) larger than Byte, and the fractional >> + * portion may suffer from precision loss or rounding. The input must >> + * be positive. > > Even though the test suite gives some illustrations, I think we should > document here the patterns we're intending to support. IIUC, we aim for > > [quote] > The size parsing supports the following syntaxes > > - 12345 - decimal, bytes > - 12345{bBkKmMgGtT} - decimal, scaled bytes Yes. Actually 12345{bBkKmMgGtTpPeE}, as long as it doesn't overflow 16E. > - 12345.678 - fractional decimal, bytes No - this was already rejected prior to my patch, and my patch keeps it as rejected (that's the whole mul_required bool, which checks whether mul > 1). > - 12345.678{bBkKmMgGtT} - fractional decimal, scaled bytes Close; we reject bB in this situation for the same reason that we reject fractional decimal without suffix. Also, patch 3/3 was questioning whether the fractional portion must be exact or is permitted to round > - 0x7FEE - hex, bytes Yes, and with the additional note that 'E' and 'B' are treated as hex digits, not scale suffixes, in this form. > > The following are intentionally not supported > > - octal Never has worked. > - fractional hex worked by accident, dropping it in this patch is not deemed worth a deprecation period. > - floating point exponents worked by accident, dropping it in this patch is not deemed worth a deprecation period. > [/quote] and with one more form: patch 2/3 - 0x123abc{kKmMgGtTpP} - hex, scaled bytes, with limited set of working suffixes, and slated for future removal (this one is barely plausible enough that we need the deprecation period to see who uses it) At any rate, I like the idea of being more explicit in the function description, so I will enhance v2 along these lines. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org