Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp727046ybl; Wed, 28 Aug 2019 04:33:25 -0700 (PDT) X-Google-Smtp-Source: APXvYqzmtK9yTmfN1mmr8swyrOj3UggM13vP00CpoAqdv50hmuro84lVfTqzh5Jgbcet1zVFo7J2 X-Received: by 2002:a63:2043:: with SMTP id r3mr3047278pgm.311.1566992005595; Wed, 28 Aug 2019 04:33:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566992005; cv=none; d=google.com; s=arc-20160816; b=WWBmvs9ZkxHd+NVbvFfWGHH2IPAxpBgBL5BRwkIUbF+7vaZtCbyhzH0p7Z6u0pKENy 0ZbivA74x/KjPNf76TahY9s+sGnEu+dKEua61WJoEC28UGRmnkhD1JxhBff591LX11Nh iwEIUU+OaVOkPb9cF9kU+C68eneXtphxrSbLnEVGA8vUDZ1ELTPpXJe+H1UHMPsueRS/ yuzm5qbpZds1NW6UFnmZOqiK39lRXZPd7wtD3MhikVvVZLsiog/GDPonWtZSocrWAFjh xgPmx7+5N5y20sW8gsokQrjDPOuYr/MiGSgXkCeYjT84gKriCRQLALHO0FpL8tna8ZPf EJtw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-transfer-encoding:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=ylyx7k2eT3h2Oo3XaVBJyzXnHxS1Qi1r2VpaPHXvyqg=; b=d3jNX0uAYfGNvYUO7sY52RpLuhNpojtNgOEvkeip24o2UP3lZdzkW7L6Xo2JJieRdL y2z96zuOCeCQGsCw291v+BXupH/0H2oock1EY1cI/TSdARqbRtc9S7bxlsUQ8Sr6Rqf9 zdPfVvf6K08S+4Wx5pa1AXff4Y4HzxUFY7Y6MKHyzHb3h3vYTydmoDeOr4/N8uYjlYYZ 9VDzMqN2FG4FeRvxG6ViaDZWazb4bgm3mydHh/i7m9hXNZ758U+ZoyyXYL2gTQVxXoL9 9cJU9avaPnWlvPEoZGqZTUkHw5M0gbFcWGU3QuRS3ZFp2/ZQeMqe7ry9I8cCrawZ6uIT yx0g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k13si1914335pgt.285.2019.08.28.04.33.09; Wed, 28 Aug 2019 04:33:25 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726368AbfH1LcU (ORCPT + 99 others); Wed, 28 Aug 2019 07:32:20 -0400 Received: from mx2.suse.de ([195.135.220.15]:55558 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726253AbfH1LcT (ORCPT ); Wed, 28 Aug 2019 07:32:19 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 9A700AED0; Wed, 28 Aug 2019 11:32:17 +0000 (UTC) Date: Wed, 28 Aug 2019 13:32:16 +0200 From: Petr Mladek To: Uwe =?iso-8859-1?Q?Kleine-K=F6nig?= Cc: Sergey Senozhatsky , Steven Rostedt , Enrico@kleine-koenig.org, Weigelt@kleine-koenig.org, Andrew Morton , Jani Nikula , metux IT consult , Jonathan Corbet , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2] vsprintf: introduce %dE for error constants Message-ID: <20190828113216.p2yiha4xyupkbcbs@pathway.suse.cz> References: <20190827211244.7210-1-uwe@kleine-koenig.org> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20190827211244.7210-1-uwe@kleine-koenig.org> User-Agent: NeoMutt/20170912 (1.9.0) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue 2019-08-27 23:12:44, Uwe Kleine-K?nig wrote: > Petr Mladek had some concerns: > > The array is long, created by cpu&paste, the index of each code > > is not obvious. > > Yeah right, the array is long. This cannot really be changed because we > have that many error codes. I don't understand your concern about the > index not being obvious. The array was just a list of (number, string) > pairs where the position in the array didn't have any semantic. I missed that the number was stored in the array as well. I somehow expected that it was array of strings. > > There are ideas to make the code even more tricky to reduce > > the size, keep it fast. > > I think Enrico Weigelt's suggestion to use a case is the best > performance-wise so that's what I picked up. Also I hope that > performance isn't that important because the need to print an error > should not be so common that it really hurts in production. I personally do not like switch/case. It is a lot of code. I wonder if it even saved some space. If you want to safe space, I would use u16 to store the numbers. Or I would use array of strings. There will be only few holes. You might also consider handling only the most commonly used codes from errno.h and errno-base.h (1..133). There will be no holes and the codes are stable. > > Both, %dE modifier and the output format (ECODE) is non-standard. > > Yeah, obviously right. The problem is that the new modifier does > something that wasn't implemented before, so it cannot match any > standard. %pI is only known on Linux either, so I think being > non-standard is a weak argument. I am not completely sure that %p modifiers were a good idea. They came before I started maintaining printk(). They add more complex algorithms into paths where we could not report problems easily (printk recursion). Also they are causing problems with unit testing that might be done in userspace. These non-standard formats cause that printk() can't be simply substituted by printf(). I am not keen to spread these problems over more formats. Also %d format is more complicated. It is often used with already existing modifiers. > > Upper letters gain a lot of attention. But the error code is > > only helper information. Also many error codes are misleading because > > they are used either wrongly or there was no better available. > > This isn't really an argument against the patch I think. Sure, if a > function returned (say) EIO while ETIMEOUT would be better, my patch > doesn't improve that detail. Still > > mydev: Failed to initialize blablub: EIO > > is more expressive than > > mydev: Failed to initialize blablub: -5 OK, upper letters probably are not a problem. But what about EWOULDBLOCK and EDEADLOCK? They have the same error codes as EAGAIN and EDEADLK. It might cause a lot of confusion. People might spend a lot of time searching for EAGAIN before they notice that EWOULDBLOCK was used in the code instead. Also you still did not answer the question where the idea came from. Did it just look nice? Anyone asked for it? Who? Why? > > There is no proof that this approach would be widely acceptable for > > subsystem maintainers. Some might not like mass and "blind" code > > changes. Some might not like the output at all. > > I don't intend to mass convert existing code. I would restrict myself to > updating the documentation and then maybe send a patch per subsystem as an > example to let maintainers know and judge for themselves if they like it or > not. And if it doesn't get picked up, we can just remove the feature again next > year (or so). It looks like a lot of potentially useless work. > I dropped the example conversion, I think the idea should be clear now > even without an explicit example. Please, do the opposite. Add conversion of few subsystems into the patchset and add more people into CC. We will see immediately whether it makes sense to spend time on this. I personally think that this feature is not worth the code, data, and bikeshedding. Best Regards, Petr