From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MymVR-00054u-AJ for qemu-devel@nongnu.org; Fri, 16 Oct 2009 09:06:05 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MymVL-00052Y-U1 for qemu-devel@nongnu.org; Fri, 16 Oct 2009 09:06:03 -0400 Received: from [199.232.76.173] (port=58479 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MymVL-00052T-OZ for qemu-devel@nongnu.org; Fri, 16 Oct 2009 09:05:59 -0400 Received: from mx1.redhat.com ([209.132.183.28]:61833) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MymVK-0001QY-R8 for qemu-devel@nongnu.org; Fri, 16 Oct 2009 09:05:59 -0400 Date: Fri, 16 Oct 2009 10:05:44 -0300 From: Luiz Capitulino Message-ID: <20091016100544.266442f5@doriath> In-Reply-To: <4AD82972.7010200@redhat.com> References: <1255453026-18637-1-git-send-email-lcapitulino@redhat.com> <1255453026-18637-7-git-send-email-lcapitulino@redhat.com> <1255561330.29192.2.camel@slab.beaverton.ibm.com> <20091015103405.591e2f3b@doriath> <1255626960.29192.7.camel@slab.beaverton.ibm.com> <20091015145208.1d871f09@doriath> <1255630433.29192.16.camel@slab.beaverton.ibm.com> <20091015160839.7dbef5bf@doriath> <1255637617.29192.59.camel@slab.beaverton.ibm.com> <4AD78CCD.6030006@us.ibm.com> <1255641511.29192.68.camel@slab.beaverton.ibm.com> <4AD793C6.9060508@us.ibm.com> <1255646688.3954.45.camel@slab.beaverton.ibm.com> <4AD82972.7010200@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH 6/9] QError: Add qdev not found error List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: Anthony Liguori , kraxel@redhat.com, Hollis Blanchard , qemu-devel@nongnu.org On Fri, 16 Oct 2009 10:06:10 +0200 Paolo Bonzini wrote: > On 10/16/2009 12:44 AM, Hollis Blanchard wrote: > > How about this (basically what Paolo suggested): > > > > { "error": { "code": 12, > > "desc": "device %{bus}:%{address} already open", > > "data": { "bus": 0, "address": 12 } } } > > > > 'desc'*may* be used by the client, or may be replaced with a localized > > version. > > I would say that desc need not go on the wire too. The client might not > even want to show the same string to the user, for example they may want > to say "mouse already" open. > > The "device %{bus}:%{address} already open" would be strictly inside > QEMU, for consumption of the monitor interface. Of course since the > server is in QEMU too it makes sense to consolidate it in the same > struct, but this does not mean that everything in the struct needs to go > on the wire. This is what my current proposal does, "desc" goes on the wire because it's a simple description but messages for users consumption are printed by .user_print. I think we could make this very simple if we use a solution along the lines suggested by Hollis and do _not_ allow variable information (ie. 'handler data') to go on the wire. I mean, we could let current errors as they are but add error codes and new error descriptions to be used by the protocol only. For example, a call to: monitor_printf(mon, "husb: host usb device %d.%d is already open\n", bus_num, addr); Would become: qemu_error_structed(404, "husb: host usb device %d.%d is already open\n", bus_num, addr); When in user protocol the message is printed normally, when in protocol mode the error code is used to index the error table and on the wire we emit: { "error": { "code": 404, "desc": "device already open" } } Now I need to know if it's ok to have such simple error information on the wire.