From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51731) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bSJgm-0007Uk-RS for qemu-devel@nongnu.org; Wed, 27 Jul 2016 03:55:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bSJgl-0003VV-RI for qemu-devel@nongnu.org; Wed, 27 Jul 2016 03:55:36 -0400 From: Markus Armbruster References: <1468845016-43468-1-git-send-email-pasic@linux.vnet.ibm.com> <1469532873-78542-1-git-send-email-pasic@linux.vnet.ibm.com> <7c4bdb1e-f0aa-4a07-2780-37f4f92c6665@redhat.com> <57979B63.1060505@linux.vnet.ibm.com> <5fd0b60a-4d31-d949-9f9b-934b228b2e4e@redhat.com> Date: Wed, 27 Jul 2016 09:55:27 +0200 In-Reply-To: <5fd0b60a-4d31-d949-9f9b-934b228b2e4e@redhat.com> (Max Reitz's message of "Tue, 26 Jul 2016 19:54:13 +0200") Message-ID: <87twfbwm4w.fsf@dusky.pond.sub.org> MIME-Version: 1.0 Content-Type: text/plain Subject: Re: [Qemu-devel] [PATCH v2 1/1] block: improve error handling in raw_open List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Max Reitz Cc: Halil Pasic , qemu-block@nongnu.org, Kevin Wolf , Cornelia Huck , qemu-devel@nongnu.org Max Reitz writes: > On 26.07.2016 19:18, Halil Pasic wrote: >> >> >> On 07/26/2016 05:42 PM, Max Reitz wrote: >>>> +++ b/block/raw-posix.c >>>>> @@ -485,6 +485,7 @@ static int raw_open_common(BlockDriverState *bs, QDict *options, >>>>> s->fd = -1; >>>>> fd = qemu_open(filename, s->open_flags, 0644); >>>>> if (fd < 0) { >>>>> + error_setg_errno(errp, errno, "Could not open file"); >>> We don't guarantee that error_setg_errno() does not modify errno. (In >>> practice it should not, but we don't guarantee that.) >>> >> >> >> Thank you very much for your review. I have double checked, and I >> remembered correctly: error_setg_errno saves and restores the original >> errno, so that is why I assumed it does not. > > Oh, and about this: Yes, I remember, this was introduced after we had > noticed that we had some old code that assumed that error_setg() would > not modify errno. We had to decide between making error_setg*() save and > restore errno (which we deemed a bit ugly) and fixing all of that old > code (which we deemed hard). So we want for the former, but I don't > think we actually guarantee that behavior (because you should never rely > on any function not to modify errno). Since we rely on this behavior, we should definitely spell it out in the function contract. > (The difference between us saving/restoring errno in practice and > guaranteeing that feature is the lack of documentation thereof, i.e., > the comment for error_setg() in include/qapi/error.h doesn't mention > this :-)) Let's fix it.