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=-6.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham 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 C690BC35656 for ; Fri, 21 Feb 2020 16:26:08 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (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 8F3AC20578 for ; Fri, 21 Feb 2020 16:26:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="Iga7vOeC" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8F3AC20578 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1j5B7c-000826-KX; Fri, 21 Feb 2020 16:25:48 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1j5B7b-00081t-6t for xen-devel@lists.xenproject.org; Fri, 21 Feb 2020 16:25:47 +0000 X-Inumbo-ID: 8f678e14-54c6-11ea-ade5-bc764e2007e4 Received: from us-smtp-delivery-1.mimecast.com (unknown [205.139.110.61]) by us1-rack-iad1.inumbo.com (Halon) with ESMTP id 8f678e14-54c6-11ea-ade5-bc764e2007e4; Fri, 21 Feb 2020 16:23:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582302237; 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=JBhfKaWgtYfVqdPMI1QX2vJM4z0LfCs4ENY5/H4RI0I=; b=Iga7vOeC1RrtQtmsqfBNZLd0mI6IBHSATOnDOdMcLBnrQGXYuSkgVL0nGwjxInNa+AUUSq sCJfGoohPqFdMy09Jr3ld+YXV/4O2imykiPHRn9Y1UG7D8D0T12vlbKmQAtYXcUH1eZVp1 9zHcOZ7qKvU/YhFPDTGI98k9nFn9ZQM= 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-160-nLzZOgXvPd-SRdslcQm1LA-1; Fri, 21 Feb 2020 11:23:55 -0500 X-MC-Unique: nLzZOgXvPd-SRdslcQm1LA-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E2F4EDBA5; Fri, 21 Feb 2020 16:23:53 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-129.ams2.redhat.com [10.36.116.129]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 79B6D10001AE; Fri, 21 Feb 2020 16:23:48 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id F01CF11386A6; Fri, 21 Feb 2020 17:23:46 +0100 (CET) From: Markus Armbruster To: Vladimir Sementsov-Ogievskiy References: <20200131130118.1716-1-vsementsov@virtuozzo.com> <20200131130118.1716-3-vsementsov@virtuozzo.com> <87mu9c70x1.fsf@dusky.pond.sub.org> <278458e5-c62c-8eaa-672f-cc70bbc15304@virtuozzo.com> Date: Fri, 21 Feb 2020 17:23:46 +0100 In-Reply-To: <278458e5-c62c-8eaa-672f-cc70bbc15304@virtuozzo.com> (Vladimir Sementsov-Ogievskiy's message of "Fri, 21 Feb 2020 12:42:06 +0300") Message-ID: <87blpr6h9p.fsf@dusky.pond.sub.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Subject: Re: [Xen-devel] [PATCH v7 02/11] error: auto propagated local_err X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Stefano Stabellini , qemu-block@nongnu.org, Paul Durrant , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Michael Roth , qemu-devel@nongnu.org, Greg Kurz , Gerd Hoffmann , Stefan Hajnoczi , Anthony Perard , xen-devel@lists.xenproject.org, Max Reitz , Laszlo Ersek , Stefan Berger Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" VmxhZGltaXIgU2VtZW50c292LU9naWV2c2tpeSA8dnNlbWVudHNvdkB2aXJ0dW96em8uY29tPiB3 cml0ZXM6Cgo+IDIxLjAyLjIwMjAgMTI6MTksIE1hcmt1cyBBcm1icnVzdGVyIHdyb3RlOgo+PiBW bGFkaW1pciBTZW1lbnRzb3YtT2dpZXZza2l5IDx2c2VtZW50c292QHZpcnR1b3p6by5jb20+IHdy aXRlczoKPj4KPj4+IEhlcmUgaXMgaW50cm9kdWNlZCBFUlJQX0FVVE9fUFJPUEFHQVRFIG1hY3Jv LCB0byBiZSB1c2VkIGF0IHN0YXJ0IG9mCj4+PiBmdW5jdGlvbnMgd2l0aCBhbiBlcnJwIE9VVCBw YXJhbWV0ZXIuCj4+Pgo+Pj4gSXQgaGFzIHRocmVlIGdvYWxzOgo+Pj4KPj4+IDEuIEZpeCBpc3N1 ZSB3aXRoIGVycm9yX2ZhdGFsIGFuZCBlcnJvcl9wcmVwZW5kL2Vycm9yX2FwcGVuZF9oaW50OiB1 c2VyCj4+PiBjYW4ndCBzZWUgdGhpcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLCBiZWNhdXNlIGV4 aXQoKSBoYXBwZW5zIGluCj4+PiBlcnJvcl9zZXRnIGVhcmxpZXIgdGhhbiBpbmZvcm1hdGlvbiBp cyBhZGRlZC4gW1JlcG9ydGVkIGJ5IEdyZWcgS3Vyel0KPj4+Cj4+PiAyLiBGaXggaXNzdWUgd2l0 aCBlcnJvcl9hYm9ydCBhbmQgZXJyb3JfcHJvcGFnYXRlOiB3aGVuIHdlIHdyYXAKPj4+IGVycm9y X2Fib3J0IGJ5IGxvY2FsX2VycitlcnJvcl9wcm9wYWdhdGUsIHRoZSByZXN1bHRpbmcgY29yZWR1 bXAgd2lsbAo+Pj4gcmVmZXIgdG8gZXJyb3JfcHJvcGFnYXRlIGFuZCBub3QgdG8gdGhlIHBsYWNl IHdoZXJlIGVycm9yIGhhcHBlbmVkLgo+Pj4gKHRoZSBtYWNybyBpdHNlbGYgZG9lc24ndCBmaXgg dGhlIGlzc3VlLCBidXQgaXQgYWxsb3dzIHVzIHRvIFszLl0gZHJvcAo+Pj4gdGhlIGxvY2FsX2Vy citlcnJvcl9wcm9wYWdhdGUgcGF0dGVybiwgd2hpY2ggd2lsbCBkZWZpbml0ZWx5IGZpeCB0aGUK Pj4+IGlzc3VlKSBbUmVwb3J0ZWQgYnkgS2V2aW4gV29sZl0KPj4+Cj4+PiAzLiBEcm9wIGxvY2Fs X2VycitlcnJvcl9wcm9wYWdhdGUgcGF0dGVybiwgd2hpY2ggaXMgdXNlZCB0byB3b3JrYXJvdW5k Cj4+PiB2b2lkIGZ1bmN0aW9ucyB3aXRoIGVycnAgcGFyYW1ldGVyLCB3aGVuIGNhbGxlciB3YW50 cyB0byBrbm93IHJlc3VsdGluZwo+Pj4gc3RhdHVzLiAoTm90ZTogYWN0dWFsbHkgdGhlc2UgZnVu Y3Rpb25zIGNvdWxkIGJlIG1lcmVseSB1cGRhdGVkIHRvCj4+PiByZXR1cm4gaW50IGVycm9yIGNv ZGUpLgo+Pj4KPj4+IFRvIGFjaGlldmUgdGhlc2UgZ29hbHMsIGxhdGVyIHBhdGNoZXMgd2lsbCBh ZGQgaW52b2NhdGlvbnMKPj4+IG9mIHRoaXMgbWFjcm8gYXQgdGhlIHN0YXJ0IG9mIGZ1bmN0aW9u cyB3aXRoIGVpdGhlciB1c2UKPj4+IGVycm9yX3ByZXBlbmQvZXJyb3JfYXBwZW5kX2hpbnQgKHNv bHZpbmcgMSkgb3Igd2hpY2ggdXNlCj4+PiBsb2NhbF9lcnIrZXJyb3JfcHJvcGFnYXRlIHRvIGNo ZWNrIGVycm9ycywgc3dpdGNoaW5nIHRob3NlCj4+PiBmdW5jdGlvbnMgdG8gdXNlICplcnJwIGlu c3RlYWQgKHNvbHZpbmcgMiBhbmQgMykuCj4+Pgo+Pj4gU2lnbmVkLW9mZi1ieTogVmxhZGltaXIg U2VtZW50c292LU9naWV2c2tpeSA8dnNlbWVudHNvdkB2aXJ0dW96em8uY29tPgo+Pj4gUmV2aWV3 ZWQtYnk6IEdyZWcgS3VyeiA8Z3JvdWdAa2FvZC5vcmc+Cj4+PiBSZXZpZXdlZC1ieTogRXJpYyBC bGFrZSA8ZWJsYWtlQHJlZGhhdC5jb20+Cj4+PiAtLS0KPj4+Cj4+PiBDQzogRXJpYyBCbGFrZSA8 ZWJsYWtlQHJlZGhhdC5jb20+Cj4+PiBDQzogS2V2aW4gV29sZiA8a3dvbGZAcmVkaGF0LmNvbT4K Pj4+IENDOiBNYXggUmVpdHogPG1yZWl0ekByZWRoYXQuY29tPgo+Pj4gQ0M6IEdyZWcgS3VyeiA8 Z3JvdWdAa2FvZC5vcmc+Cj4+PiBDQzogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBr ZXJuZWwub3JnPgo+Pj4gQ0M6IEFudGhvbnkgUGVyYXJkIDxhbnRob255LnBlcmFyZEBjaXRyaXgu Y29tPgo+Pj4gQ0M6IFBhdWwgRHVycmFudCA8cGF1bEB4ZW4ub3JnPgo+Pj4gQ0M6IFN0ZWZhbiBI YWpub2N6aSA8c3RlZmFuaGFAcmVkaGF0LmNvbT4KPj4+IENDOiAiUGhpbGlwcGUgTWF0aGlldS1E YXVkw6kiIDxwaGlsbWRAcmVkaGF0LmNvbT4KPj4+IENDOiBMYXN6bG8gRXJzZWsgPGxlcnNla0By ZWRoYXQuY29tPgo+Pj4gQ0M6IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPgo+Pj4g Q0M6IFN0ZWZhbiBCZXJnZXIgPHN0ZWZhbmJAbGludXguaWJtLmNvbT4KPj4+IENDOiBNYXJrdXMg QXJtYnJ1c3RlciA8YXJtYnJ1QHJlZGhhdC5jb20+Cj4+PiBDQzogTWljaGFlbCBSb3RoIDxtZHJv dGhAbGludXgudm5ldC5pYm0uY29tPgo+Pj4gQ0M6IHFlbXUtYmxvY2tAbm9uZ251Lm9yZwo+Pj4g Q0M6IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwo+Pj4KPj4+ICAgaW5jbHVkZS9xYXBp L2Vycm9yLmggfCA4MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LQo+Pj4gICAxIGZpbGUgY2hhbmdlZCwgODIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ Pj4KPj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3FhcGkvZXJyb3IuaCBiL2luY2x1ZGUvcWFwaS9l cnJvci5oCj4+PiBpbmRleCBkMzQ5ODcxNDhkLi5iOTQ1MmQ0ODA2IDEwMDY0NAo+Pj4gLS0tIGEv aW5jbHVkZS9xYXBpL2Vycm9yLmgKPj4+ICsrKyBiL2luY2x1ZGUvcWFwaS9lcnJvci5oCj4+PiBA QCAtNzgsNyArNzgsNyBAQAo+Pj4gICAgKiBDYWxsIGEgZnVuY3Rpb24gdHJlYXRpbmcgZXJyb3Jz IGFzIGZhdGFsOgo+Pj4gICAgKiAgICAgZm9vKGFyZywgJmVycm9yX2ZhdGFsKTsKPj4+ICAgICoK Pj4+IC0gKiBSZWNlaXZlIGFuIGVycm9yIGFuZCBwYXNzIGl0IG9uIHRvIHRoZSBjYWxsZXI6Cj4+ PiArICogUmVjZWl2ZSBhbiBlcnJvciBhbmQgcGFzcyBpdCBvbiB0byB0aGUgY2FsbGVyIChERVBS RUNBVEVEKik6Cj4+PiAgICAqICAgICBFcnJvciAqZXJyID0gTlVMTDsKPj4+ICAgICogICAgIGZv byhhcmcsICZlcnIpOwo+Pj4gICAgKiAgICAgaWYgKGVycikgewo+Pj4gQEAgLTk4LDYgKzk4LDUw IEBACj4+PiAgICAqICAgICBmb28oYXJnLCBlcnJwKTsKPj4+ICAgICogZm9yIHJlYWRhYmlsaXR5 Lgo+Pj4gICAgKgo+Pj4gKyAqIERFUFJFQ0FURUQqIFRoaXMgcGF0dGVybiBpcyBkZXByZWNhdGVk IG5vdywgdGhlIHVzZSBFUlJQX0FVVE9fUFJPUEFHQVRFIG1hY3JvCj4+PiArICogaW5zdGVhZCAo ZGVmaW5lZCBiZWxvdykuCj4+PiArICogSXQncyBkZXByZWNhdGVkIGJlY2F1c2Ugb2YgdHdvIHRo aW5nczoKPj4+ICsgKgo+Pj4gKyAqIDEuIElzc3VlIHdpdGggZXJyb3JfYWJvcnQgYW5kIGVycm9y X3Byb3BhZ2F0ZTogd2hlbiB3ZSB3cmFwIGVycm9yX2Fib3J0IGJ5Cj4+PiArICogbG9jYWxfZXJy K2Vycm9yX3Byb3BhZ2F0ZSwgdGhlIHJlc3VsdGluZyBjb3JlZHVtcCB3aWxsIHJlZmVyIHRvCj4+ PiArICogZXJyb3JfcHJvcGFnYXRlIGFuZCBub3QgdG8gdGhlIHBsYWNlIHdoZXJlIGVycm9yIGhh cHBlbmVkLgo+Pj4gKyAqCj4+PiArICogMi4gQSBsb3Qgb2YgZXh0cmEgY29kZSBvZiB0aGUgc2Ft ZSBwYXR0ZXJuCj4+PiArICoKPj4+ICsgKiBIb3cgdG8gdXBkYXRlIG9sZCBjb2RlIHRvIHVzZSBF UlJQX0FVVE9fUFJPUEFHQVRFPwo+Pj4gKyAqCj4+PiArICogQWxsIHlvdSBuZWVkIGlzIHRvIGFk ZCBFUlJQX0FVVE9fUFJPUEFHQVRFKCkgaW52b2NhdGlvbiBhdCBmdW5jdGlvbiBzdGFydCwKPj4+ ICsgKiB0aGFuIHlvdSBtYXkgc2FmZWx5IGRlcmVmZXJlbmNlIGVycnAgdG8gY2hlY2sgZXJyb3Jz IGFuZCBkbyBub3QgbmVlZCBhbnkKPj4+ICsgKiBhZGRpdGlvbmFsIGxvY2FsIEVycm9yIHZhcmlh YmxlcyBvciBjYWxscyB0byBlcnJvcl9wcm9wYWdhdGUoKS4KPj4+ICsgKgo+Pj4gKyAqIEV4YW1w bGU6Cj4+PiArICoKPj4+ICsgKiBvbGQgY29kZQo+Pj4gKyAqCj4+PiArICogICAgIHZvaWQgZm4o Li4uLCBFcnJvciAqKmVycnApIHsKPj4+ICsgKiAgICAgICAgIEVycm9yICplcnIgPSBOVUxMOwo+ Pj4gKyAqICAgICAgICAgZm9vKGFyZywgJmVycik7Cj4+PiArICogICAgICAgICBpZiAoZXJyKSB7 Cj4+PiArICogICAgICAgICAgICAgaGFuZGxlIHRoZSBlcnJvci4uLgo+Pj4gKyAqICAgICAgICAg ICAgIGVycm9yX3Byb3BhZ2F0ZShlcnJwLCBlcnIpOwo+Pj4gKyAqICAgICAgICAgICAgIHJldHVy bjsKPj4+ICsgKiAgICAgICAgIH0KPj4+ICsgKiAgICAgICAgIC4uLgo+Pj4gKyAqICAgICB9Cj4+ PiArICoKPj4+ICsgKiB1cGRhdGVkIGNvZGUKPj4+ICsgKgo+Pj4gKyAqICAgICB2b2lkIGZuKC4u LiwgRXJyb3IgKiplcnJwKSB7Cj4+PiArICogICAgICAgICBFUlJQX0FVVE9fUFJPUEFHQVRFKCk7 Cj4+PiArICogICAgICAgICBmb28oYXJnLCBlcnJwKTsKPj4+ICsgKiAgICAgICAgIGlmICgqZXJy cCkgewo+Pj4gKyAqICAgICAgICAgICAgIGhhbmRsZSB0aGUgZXJyb3IuLi4KPj4+ICsgKiAgICAg ICAgICAgICByZXR1cm47Cj4+PiArICogICAgICAgICB9Cj4+PiArICogICAgICAgICAuLi4KPj4+ ICsgKiAgICAgfQo+Pj4gKyAqCj4+PiArICoKPj4+ICAgICogUmVjZWl2ZSBhbmQgYWNjdW11bGF0 ZSBtdWx0aXBsZSBlcnJvcnMgKGZpcnN0IG9uZSB3aW5zKToKPj4+ICAgICogICAgIEVycm9yICpl cnIgPSBOVUxMLCAqbG9jYWxfZXJyID0gTlVMTDsKPj4+ICAgICogICAgIGZvbyhhcmcsICZlcnIp Owo+Pgo+PiBMZXQncyBleHBsYWluIHdoYXQgc2hvdWxkIGJlIGRvbmUgKmZpcnN0KiwgYW5kIG9u bHkgdGhlbiB0YWxrIGFib3V0IHRoZQo+PiBkZXByZWNhdGVkIHBhdHRlcm4gYW5kIGhvdyB0byBj b252ZXJ0IGl0IHRvIGN1cnJlbnQgdXNhZ2UuCj4+Cj4+PiBAQCAtMzQ4LDYgKzM5Miw0MyBAQCB2 b2lkIGVycm9yX3NldF9pbnRlcm5hbChFcnJvciAqKmVycnAsCj4+PiAgICAgICAgICAgICAgICAg ICAgICAgICAgIEVycm9yQ2xhc3MgZXJyX2NsYXNzLCBjb25zdCBjaGFyICpmbXQsIC4uLikKPj4+ ICAgICAgIEdDQ19GTVRfQVRUUig2LCA3KTsKPj4+ICAgK3R5cGVkZWYgc3RydWN0IEVycm9yUHJv cGFnYXRvciB7Cj4+PiArICAgIEVycm9yICpsb2NhbF9lcnI7Cj4+PiArICAgIEVycm9yICoqZXJy cDsKPj4+ICt9IEVycm9yUHJvcGFnYXRvcjsKPj4+ICsKPj4+ICtzdGF0aWMgaW5saW5lIHZvaWQg ZXJyb3JfcHJvcGFnYXRvcl9jbGVhbnVwKEVycm9yUHJvcGFnYXRvciAqcHJvcCkKPj4+ICt7Cj4+ PiArICAgIGVycm9yX3Byb3BhZ2F0ZShwcm9wLT5lcnJwLCBwcm9wLT5sb2NhbF9lcnIpOwo+Pj4g K30KPj4+ICsKPj4+ICtHX0RFRklORV9BVVRPX0NMRUFOVVBfQ0xFQVJfRlVOQyhFcnJvclByb3Bh Z2F0b3IsIGVycm9yX3Byb3BhZ2F0b3JfY2xlYW51cCk7Cj4+PiArCj4+PiArLyoKPj4+ICsgKiBF UlJQX0FVVE9fUFJPUEFHQVRFCj4+PiArICoKPj4+ICsgKiBUaGlzIG1hY3JvIGlzIGNyZWF0ZWQg dG8gYmUgdGhlIGZpcnN0IGxpbmUgb2YgYSBmdW5jdGlvbiB3aGljaCB1c2UKPj4+ICsgKiBFcnJv ciAqKmVycnAgcGFyYW1ldGVyIHRvIHJlcG9ydCBlcnJvci4gSXQncyBuZWVkZWQgb25seSBpbiBj YXNlcyB3aGVyZSB3ZQo+Pj4gKyAqIHdhbnQgdG8gdXNlIGVycm9yX3ByZXBlbmQsIGVycm9yX2Fw cGVuZF9oaW50IG9yIGRlcmVmZXJlbmNlICplcnJwLiBJdCdzCj4+PiArICogc3RpbGwgc2FmZSAo YnV0IHVzZWxlc3MpIGluIG90aGVyIGNhc2VzLgo+Pj4gKyAqCj4+PiArICogSWYgZXJycCBpcyBO VUxMIG9yIHBvaW50cyB0byBlcnJvcl9mYXRhbCwgaXQgaXMgcmV3cml0dGVuIHRvIHBvaW50IHRv IGEKPj4+ICsgKiBsb2NhbCBFcnJvciBvYmplY3QsIHdoaWNoIHdpbGwgYmUgYXV0b21hdGljYWxs eSBwcm9wYWdhdGVkIHRvIHRoZSBvcmlnaW5hbAo+Pj4gKyAqIGVycnAgb24gZnVuY3Rpb24gZXhp dCAoc2VlIGVycm9yX3Byb3BhZ2F0b3JfY2xlYW51cCkuCj4+PiArICoKPj4+ICsgKiBBZnRlciBp bnZvY2F0aW9uIG9mIHRoaXMgbWFjcm8gaXQgaXMgYWx3YXlzIHNhZmUgdG8gZGVyZWZlcmVuY2Ug ZXJycAo+Pj4gKyAqIChhcyBpdCdzIG5vdCBOVUxMIGFueW1vcmUpIGFuZCB0byBhZGQgaW5mb3Jt YXRpb24gYnkgZXJyb3JfcHJlcGVuZCBvcgo+Pj4gKyAqIGVycm9yX2FwcGVuZF9oaW50IChhcywg aWYgaXQgd2FzIGVycm9yX2ZhdGFsLCB3ZSBzd2FwcGVkIGl0IHdpdGggYQo+Pj4gKyAqIGxvY2Fs X2Vycm9yIHRvIGJlIHByb3BhZ2F0ZWQgb24gY2xlYW51cCkuCj4+PiArICoKPj4+ICsgKiBOb3Rl OiB3ZSBkb24ndCB3cmFwIHRoZSBlcnJvcl9hYm9ydCBjYXNlLCBhcyB3ZSB3YW50IHJlc3VsdGlu ZyBjb3JlZHVtcAo+Pj4gKyAqIHRvIHBvaW50IHRvIHRoZSBwbGFjZSB3aGVyZSB0aGUgZXJyb3Ig aGFwcGVuZWQsIG5vdCB0byBlcnJvcl9wcm9wYWdhdGUuCj4+Cj4+IFRyYWRlb2ZmOiB3ZSBnYWlu IG1vcmUgdXNlZnVsIGJhY2t0cmFjZXMsIHdlIGxvc2UgbWVzc2FnZSBpbXByb3ZlbWVudHMKPj4g ZnJvbSBlcnJvcl9wcmVwZW5kKCksIGVycm9yX2FwcGVuZF9oaW50KCkgYW5kIHN1Y2gsIGlmIGFu eS4gIE1ha2VzCj4+IHNlbnNlLgo+Pgo+Pj4gKyAqLwo+Pgo+PiBUaGUgY29tbWVudCdzIGNvbnRl bnRzIGxvb2tzIG9rYXkgdG8gbWUuICBJJ2xsIHdhbnQgdG8gdHdlYWsgZm9ybWF0dGluZwo+PiB0 byBiZXR0ZXIgYmxlbmQgaW4gd2l0aCB0aGUgcmVzdCBvZiB0aGlzIGZpbGUsIGJ1dCBsZXQncyBu b3Qgd29ycnkgYWJvdXQKPj4gdGhhdCBub3cuCj4+Cj4+PiArI2RlZmluZSBFUlJQX0FVVE9fUFJP UEFHQVRFKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+Pj4gKyAgICBnX2F1 dG8oRXJyb3JQcm9wYWdhdG9yKSBfYXV0b19lcnJwX3Byb3AgPSB7LmVycnAgPSBlcnJwfTsgIFwK Pj4+ICsgICAgZXJycCA9ICgoZXJycCA9PSBOVUxMIHx8ICplcnJwID09IGVycm9yX2ZhdGFsKSAg ICAgICAgICAgICBcCj4+PiArICAgICAgICAgICAgPyAmX2F1dG9fZXJycF9wcm9wLmxvY2FsX2Vy ciA6IGVycnApCj4+PiArCj4+PiAgIC8qCj4+PiAgICAqIFNwZWNpYWwgZXJyb3IgZGVzdGluYXRp b24gdG8gYWJvcnQgb24gZXJyb3IuCj4+PiAgICAqIFNlZSBlcnJvcl9zZXRnKCkgYW5kIGVycm9y X3Byb3BhZ2F0ZSgpIGZvciBkZXRhaWxzLgo+Pgo+PiAqZXJycCA9PSBlcnJvcl9mYXRhbCB0ZXN0 cyAqZXJycCA9PSBOVUxMLCB3aGljaCBpcyBub3Qgd2hhdCB5b3Ugd2FudC4KPj4gWW91IG5lZWQg dG8gdGVzdCBlcnJwID09ICZlcnJvcl9mYXRhbCwganVzdCBsaWtlIGVycm9yX2hhbmRsZV9mYXRh bCgpLgo+Cj4gT29wcywgZ3JlYXQgYnVnKSBBbmQgbm9ib2R5IG5vdGljZWQgYmVmb3JlKSBPZiBj b3Vyc2UsIHlvdSBhcmUgcmlnaHQuCgpUaGF0J3Mgd2h5IHdlIHJldmlldyBwYXRjaGVzIDopCgo+ PiBTdXBlcmZsdW91cyBwYXJlbnRoZXNpcyBhcm91bmQgdGhlIGZpcnN0IG9wZXJhbmQgb2YgPzou Cj4+Cj4+IFdvdWxkbid0Cj4+Cj4+ICAgICAjZGVmaW5lIEVSUlBfQVVUT19QUk9QQUdBVEUoKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4+ICAgICAgICAgZ19hdXRvKEVycm9y UHJvcGFnYXRvcikgX2F1dG9fZXJycF9wcm9wID0gey5lcnJwID0gZXJycH07ICBcCj4+ICAgICAg ICAgaWYgKCFlcnJwIHx8IGVycnAgPT0gJmVycm9yX2ZhdGFsKSB7ICAgICAgICAgICAgICAgICAg ICAgICBcCj4+ICAgICAgICAgICAgIGVycnAgPSAmX2F1dG9fZXJycF9wcm9wLmxvY2FsX2Vycjsg ICAgICAgICAgICAgICAgICAgICBcCj4+ICAgICAgICAgfQo+Pgo+PiBiZSBjbGVhcmVyPwo+Pgo+ Cj4gSG1tLCBub3RhdGlvbiB3aXRoICJpZiIgd2lsbCBhbGxvdyBvbWl0dGluZyAnOycgYWZ0ZXIg bWFjcm8gaW52b2NhdGlvbiwgd2hpY2ggc2VlbXMgbm90IGdvb2QuLgo+IEFuZCBpZiBJJ20gbm90 IHdyb25nIHdlJ3ZlIGFscmVhZHkgZGlzY3Vzc2VkIGl0IHNvbWV3aGVyZSBpbiBwcmV2aW91cyB2 ZXJzaW9ucy4KCk5ldmVybWluZC4gIFdlJ2QgaGF2ZSB0byBhZGQgZG8gLi4uIHdoaWxlIHNlbWlj b2xvbiBhcm1vciwgYW5kIHRoZW4gaXQncwpoYXJkbHkgY2xlYXJlciBhbnltb3JlLgoKPiBTdGls bCwgbm8gb2JqZWN0aW9ucyBmb3Igcy9lcnJwID09IE5VTEwvIWVycnAvIGFuZCB3ZSBuZWVkIHMv KmVycnAgPT0gZXJyb3JfZmF0YWwvZXJycCA9PSAmZXJyb3JfZmF0YWwvIGZvciBzdXJlLgoKT2th eSEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs 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=-6.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham 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 0EA53C35646 for ; Fri, 21 Feb 2020 16:24:53 +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 CE75020578 for ; Fri, 21 Feb 2020 16:24:52 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="Iga7vOeC" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CE75020578 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]:60820 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j5B6i-0005ut-2r for qemu-devel@archiver.kernel.org; Fri, 21 Feb 2020 11:24:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:46460) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j5B5r-0004yK-QP for qemu-devel@nongnu.org; Fri, 21 Feb 2020 11:24:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j5B5q-0003dQ-23 for qemu-devel@nongnu.org; Fri, 21 Feb 2020 11:23:59 -0500 Received: from us-smtp-1.mimecast.com ([205.139.110.61]:41659 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j5B5p-0003dA-Uo for qemu-devel@nongnu.org; Fri, 21 Feb 2020 11:23:58 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582302237; 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=JBhfKaWgtYfVqdPMI1QX2vJM4z0LfCs4ENY5/H4RI0I=; b=Iga7vOeC1RrtQtmsqfBNZLd0mI6IBHSATOnDOdMcLBnrQGXYuSkgVL0nGwjxInNa+AUUSq sCJfGoohPqFdMy09Jr3ld+YXV/4O2imykiPHRn9Y1UG7D8D0T12vlbKmQAtYXcUH1eZVp1 9zHcOZ7qKvU/YhFPDTGI98k9nFn9ZQM= 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-160-nLzZOgXvPd-SRdslcQm1LA-1; Fri, 21 Feb 2020 11:23:55 -0500 X-MC-Unique: nLzZOgXvPd-SRdslcQm1LA-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E2F4EDBA5; Fri, 21 Feb 2020 16:23:53 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-129.ams2.redhat.com [10.36.116.129]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 79B6D10001AE; Fri, 21 Feb 2020 16:23:48 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id F01CF11386A6; Fri, 21 Feb 2020 17:23:46 +0100 (CET) From: Markus Armbruster To: Vladimir Sementsov-Ogievskiy Subject: Re: [PATCH v7 02/11] error: auto propagated local_err References: <20200131130118.1716-1-vsementsov@virtuozzo.com> <20200131130118.1716-3-vsementsov@virtuozzo.com> <87mu9c70x1.fsf@dusky.pond.sub.org> <278458e5-c62c-8eaa-672f-cc70bbc15304@virtuozzo.com> Date: Fri, 21 Feb 2020 17:23:46 +0100 In-Reply-To: <278458e5-c62c-8eaa-672f-cc70bbc15304@virtuozzo.com> (Vladimir Sementsov-Ogievskiy's message of "Fri, 21 Feb 2020 12:42:06 +0300") Message-ID: <87blpr6h9p.fsf@dusky.pond.sub.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 205.139.110.61 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 , Stefano Stabellini , qemu-block@nongnu.org, Paul Durrant , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Michael Roth , qemu-devel@nongnu.org, Greg Kurz , Gerd Hoffmann , Stefan Hajnoczi , Anthony Perard , xen-devel@lists.xenproject.org, Max Reitz , Laszlo Ersek , Stefan Berger Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Vladimir Sementsov-Ogievskiy writes: > 21.02.2020 12:19, Markus Armbruster wrote: >> Vladimir Sementsov-Ogievskiy writes: >> >>> Here is introduced ERRP_AUTO_PROPAGATE macro, to be used at start of >>> functions with an errp OUT parameter. >>> >>> It has three goals: >>> >>> 1. Fix issue with error_fatal and error_prepend/error_append_hint: user >>> can't see this additional information, because exit() happens in >>> error_setg earlier than information is added. [Reported by Greg Kurz] >>> >>> 2. Fix issue with error_abort and error_propagate: when we wrap >>> error_abort by local_err+error_propagate, the resulting coredump will >>> refer to error_propagate and not to the place where error happened. >>> (the macro itself doesn't fix the issue, but it allows us to [3.] drop >>> the local_err+error_propagate pattern, which will definitely fix the >>> issue) [Reported by Kevin Wolf] >>> >>> 3. Drop local_err+error_propagate pattern, which is used to workaround >>> void functions with errp parameter, when caller wants to know resulting >>> status. (Note: actually these functions could be merely updated to >>> return int error code). >>> >>> To achieve these goals, later patches will add invocations >>> of this macro at the start of functions with either use >>> error_prepend/error_append_hint (solving 1) or which use >>> local_err+error_propagate to check errors, switching those >>> functions to use *errp instead (solving 2 and 3). >>> >>> Signed-off-by: Vladimir Sementsov-Ogievskiy >>> Reviewed-by: Greg Kurz >>> Reviewed-by: Eric Blake >>> --- >>> >>> CC: Eric Blake >>> CC: Kevin Wolf >>> CC: Max Reitz >>> CC: Greg Kurz >>> CC: Stefano Stabellini >>> CC: Anthony Perard >>> CC: Paul Durrant >>> CC: Stefan Hajnoczi >>> CC: "Philippe Mathieu-Daud=C3=A9" >>> CC: Laszlo Ersek >>> CC: Gerd Hoffmann >>> CC: Stefan Berger >>> CC: Markus Armbruster >>> CC: Michael Roth >>> CC: qemu-block@nongnu.org >>> CC: xen-devel@lists.xenproject.org >>> >>> include/qapi/error.h | 83 +++++++++++++++++++++++++++++++++++++++++++= - >>> 1 file changed, 82 insertions(+), 1 deletion(-) >>> >>> diff --git a/include/qapi/error.h b/include/qapi/error.h >>> index d34987148d..b9452d4806 100644 >>> --- a/include/qapi/error.h >>> +++ b/include/qapi/error.h >>> @@ -78,7 +78,7 @@ >>> * Call a function treating errors as fatal: >>> * foo(arg, &error_fatal); >>> * >>> - * Receive an error and pass it on to the caller: >>> + * Receive an error and pass it on to the caller (DEPRECATED*): >>> * Error *err =3D NULL; >>> * foo(arg, &err); >>> * if (err) { >>> @@ -98,6 +98,50 @@ >>> * foo(arg, errp); >>> * for readability. >>> * >>> + * DEPRECATED* This pattern is deprecated now, the use ERRP_AUTO_PROPA= GATE macro >>> + * instead (defined below). >>> + * It's deprecated because of two things: >>> + * >>> + * 1. Issue with error_abort and error_propagate: when we wrap error_a= bort by >>> + * local_err+error_propagate, the resulting coredump will refer to >>> + * error_propagate and not to the place where error happened. >>> + * >>> + * 2. A lot of extra code of the same pattern >>> + * >>> + * How to update old code to use ERRP_AUTO_PROPAGATE? >>> + * >>> + * All you need is to add ERRP_AUTO_PROPAGATE() invocation at function= start, >>> + * than you may safely dereference errp to check errors and do not nee= d any >>> + * additional local Error variables or calls to error_propagate(). >>> + * >>> + * Example: >>> + * >>> + * old code >>> + * >>> + * void fn(..., Error **errp) { >>> + * Error *err =3D NULL; >>> + * foo(arg, &err); >>> + * if (err) { >>> + * handle the error... >>> + * error_propagate(errp, err); >>> + * return; >>> + * } >>> + * ... >>> + * } >>> + * >>> + * updated code >>> + * >>> + * void fn(..., Error **errp) { >>> + * ERRP_AUTO_PROPAGATE(); >>> + * foo(arg, errp); >>> + * if (*errp) { >>> + * handle the error... >>> + * return; >>> + * } >>> + * ... >>> + * } >>> + * >>> + * >>> * Receive and accumulate multiple errors (first one wins): >>> * Error *err =3D NULL, *local_err =3D NULL; >>> * foo(arg, &err); >> >> Let's explain what should be done *first*, and only then talk about the >> deprecated pattern and how to convert it to current usage. >> >>> @@ -348,6 +392,43 @@ void error_set_internal(Error **errp, >>> ErrorClass err_class, const char *fmt, ...) >>> GCC_FMT_ATTR(6, 7); >>> +typedef struct ErrorPropagator { >>> + Error *local_err; >>> + Error **errp; >>> +} ErrorPropagator; >>> + >>> +static inline void error_propagator_cleanup(ErrorPropagator *prop) >>> +{ >>> + error_propagate(prop->errp, prop->local_err); >>> +} >>> + >>> +G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(ErrorPropagator, error_propagator_cle= anup); >>> + >>> +/* >>> + * ERRP_AUTO_PROPAGATE >>> + * >>> + * This macro is created to be the first line of a function which use >>> + * Error **errp parameter to report error. It's needed only in cases w= here we >>> + * want to use error_prepend, error_append_hint or dereference *errp. = It's >>> + * still safe (but useless) in other cases. >>> + * >>> + * If errp is NULL or points to error_fatal, it is rewritten to point = to a >>> + * local Error object, which will be automatically propagated to the o= riginal >>> + * errp on function exit (see error_propagator_cleanup). >>> + * >>> + * After invocation of this macro it is always safe to dereference err= p >>> + * (as it's not NULL anymore) and to add information by error_prepend = or >>> + * error_append_hint (as, if it was error_fatal, we swapped it with a >>> + * local_error to be propagated on cleanup). >>> + * >>> + * Note: we don't wrap the error_abort case, as we want resulting core= dump >>> + * to point to the place where the error happened, not to error_propag= ate. >> >> Tradeoff: we gain more useful backtraces, we lose message improvements >> from error_prepend(), error_append_hint() and such, if any. Makes >> sense. >> >>> + */ >> >> The comment's contents looks okay to me. I'll want to tweak formatting >> to better blend in with the rest of this file, but let's not worry about >> that now. >> >>> +#define ERRP_AUTO_PROPAGATE() \ >>> + g_auto(ErrorPropagator) _auto_errp_prop =3D {.errp =3D errp}; \ >>> + errp =3D ((errp =3D=3D NULL || *errp =3D=3D error_fatal) = \ >>> + ? &_auto_errp_prop.local_err : errp) >>> + >>> /* >>> * Special error destination to abort on error. >>> * See error_setg() and error_propagate() for details. >> >> *errp =3D=3D error_fatal tests *errp =3D=3D NULL, which is not what you = want. >> You need to test errp =3D=3D &error_fatal, just like error_handle_fatal(= ). > > Oops, great bug) And nobody noticed before) Of course, you are right. That's why we review patches :) >> Superfluous parenthesis around the first operand of ?:. >> >> Wouldn't >> >> #define ERRP_AUTO_PROPAGATE() \ >> g_auto(ErrorPropagator) _auto_errp_prop =3D {.errp =3D errp}; \ >> if (!errp || errp =3D=3D &error_fatal) { \ >> errp =3D &_auto_errp_prop.local_err; \ >> } >> >> be clearer? >> > > Hmm, notation with "if" will allow omitting ';' after macro invocation, w= hich seems not good.. > And if I'm not wrong we've already discussed it somewhere in previous ver= sions. Nevermind. We'd have to add do ... while semicolon armor, and then it's hardly clearer anymore. > Still, no objections for s/errp =3D=3D NULL/!errp/ and we need s/*errp = =3D=3D error_fatal/errp =3D=3D &error_fatal/ for sure. Okay!