From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yoshiaki Tamura Subject: Re: [RFC PATCH 07/20] Introduce qemu_put_vector() and qemu_put_vector_prepare() to use put_vector() in QEMUFile. Date: Mon, 26 Apr 2010 19:43:37 +0900 Message-ID: <4BD56E59.5090405@lab.ntt.co.jp> References: <1271829445-5328-1-git-send-email-tamura.yoshiaki@lab.ntt.co.jp> <1271829445-5328-8-git-send-email-tamura.yoshiaki@lab.ntt.co.jp> <4BD0A3B0.8040609@linux.vnet.ibm.com> <4BD11BCC.2050908@lab.ntt.co.jp> <4BD19F62.1060001@linux.vnet.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, qemu-devel@nongnu.org, avi@redhat.com, Anthony Liguori , mtosatti@redhat.com, ohmura.kei@lab.ntt.co.jp, yoshikawa.takuya@oss.ntt.co.jp To: Anthony Liguori Return-path: Received: from tama500.ecl.ntt.co.jp ([129.60.39.148]:50381 "EHLO tama500.ecl.ntt.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751619Ab0DZKn5 (ORCPT ); Mon, 26 Apr 2010 06:43:57 -0400 In-Reply-To: <4BD19F62.1060001@linux.vnet.ibm.com> Sender: kvm-owner@vger.kernel.org List-ID: Anthony Liguori wrote: > On 04/22/2010 11:02 PM, Yoshiaki Tamura wrote: >> Anthony Liguori wrote: >>> On 04/21/2010 12:57 AM, Yoshiaki Tamura wrote: >>>> For fool proof purpose, qemu_put_vector_parepare should be called >>>> before qemu_put_vector. Then, if qemu_put_* functions except this is >>>> called after qemu_put_vector_prepare, program will abort(). >>>> >>>> Signed-off-by: Yoshiaki Tamura >>> >>> I don't get it. What's this protecting against? >> >> This was introduced to prevent mixing the order of normal write and >> vector write, and flush QEMUFile buffer before handling vectors. >> While qemu_put_buffer copies data to QEMUFile buffer, >> qemu_put_vector() will bypass that buffer. >> >> It's just fool proof purpose for what we encountered at beginning, and >> if the user of qemu_put_vector() is careful enough, we can remove >> qemu_put_vectore_prepare(). While writing this message, I started to >> think that just calling qemu_fflush() in qemu_put_vector() would be >> enough... > > I definitely think removing the vector stuff in the first version would > simplify the process of getting everything merged. I'd prefer not to > have two apis so if vector operations were important from a performance > perspective, I'd want to see everything converted to a vector API. I agree with your opinion. I will measure the effect of introducing vector stuff, and post the data later.