From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:46325) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ufu02-0000aC-Px for qemu-devel@nongnu.org; Fri, 24 May 2013 11:33:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Uftzv-0001gU-4b for qemu-devel@nongnu.org; Fri, 24 May 2013 11:33:46 -0400 Received: from e39.co.us.ibm.com ([32.97.110.160]:51371) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uftzs-0001gH-Hh for qemu-devel@nongnu.org; Fri, 24 May 2013 11:33:39 -0400 Received: from /spool/local by e39.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 24 May 2013 09:33:35 -0600 Received: from d01relay03.pok.ibm.com (d01relay03.pok.ibm.com [9.56.227.235]) by d01dlp03.pok.ibm.com (Postfix) with ESMTP id DD2ECC90043 for ; Fri, 24 May 2013 11:33:31 -0400 (EDT) Received: from d01av02.pok.ibm.com (d01av02.pok.ibm.com [9.56.224.216]) by d01relay03.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r4OFXWNh271476 for ; Fri, 24 May 2013 11:33:32 -0400 Received: from d01av02.pok.ibm.com (loopback [127.0.0.1]) by d01av02.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id r4OFXVpY010449 for ; Fri, 24 May 2013 12:33:31 -0300 Message-ID: <519F884B.8060703@linux.vnet.ibm.com> Date: Fri, 24 May 2013 11:33:31 -0400 From: Corey Bryant MIME-Version: 1.0 References: <1369331087-22345-1-git-send-email-coreyb@linux.vnet.ibm.com> <1369331087-22345-2-git-send-email-coreyb@linux.vnet.ibm.com> <20130524130622.GA3426@dhcp-200-207.str.redhat.com> In-Reply-To: <20130524130622.GA3426@dhcp-200-207.str.redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 1/7] vnvram: VNVRAM bdrv support List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kevin Wolf Cc: aliguori@us.ibm.com, stefanb@linux.vnet.ibm.com, mdroth@linux.vnet.ibm.com, qemu-devel@nongnu.org, jschopp@linux.vnet.ibm.com, stefanha@redhat.com, lcapitulino@redhat.com On 05/24/2013 09:06 AM, Kevin Wolf wrote: > Am 23.05.2013 um 19:44 hat Corey Bryant geschrieben: >> Provides low-level VNVRAM functionality that reads and writes data, >> such as an entry's binary blob, to a drive image using the block >> driver. >> >> Signed-off-by: Corey Bryant > >> +/* >> + * Increase the drive size if it's too small to fit the VNVRAM data >> + */ >> +static int vnvram_drv_adjust_size(VNVRAM *vnvram) >> +{ >> + int rc = 0; >> + int64_t needed_size; >> + >> + needed_size = 0; >> + >> + if (bdrv_getlength(vnvram->bds) < needed_size) { >> + rc = bdrv_truncate(vnvram->bds, needed_size); >> + if (rc != 0) { >> + DPRINTF("%s: VNVRAM drive too small\n", __func__); >> + } >> + } >> + >> + return rc; >> +} > > This function doesn't make a whole lot of sense. It truncates the file > to size 0 if and only if bdrv_getlength() returns an error. > There's a later patch that adds a "get size" function and changes the initialization of needed_size to the actual size needed to store VNVRAM data. Anyway I should probably just include that change in this patch. I think I'll still need this function or part of it with the new simplified approach that it looks like we're going to take. >> + >> +/* >> + * Write a header to the drive with entry count of zero >> + */ >> +static int vnvram_drv_hdr_create_empty(VNVRAM *vnvram) >> +{ >> + VNVRAMDrvHdr hdr; >> + >> + hdr.version = VNVRAM_CURRENT_VERSION; >> + hdr.magic = VNVRAM_MAGIC; >> + hdr.num_entries = 0; >> + >> + vnvram_drv_hdr_cpu_to_be((&hdr)); >> + >> + if (bdrv_pwrite(vnvram->bds, 0, (&hdr), sizeof(hdr)) != sizeof(hdr)) { >> + DPRINTF("%s: Write of header to drive failed\n", __func__); >> + return -EIO; >> + } >> + >> + vnvram->end_offset = sizeof(VNVRAMDrvHdr); >> + >> + return 0; >> +} >> + >> +/* >> + * Read the header from the drive >> + */ >> +static int vnvram_drv_hdr_read(VNVRAM *vnvram, VNVRAMDrvHdr *hdr) >> +{ >> + if (bdrv_pread(vnvram->bds, 0, hdr, sizeof(*hdr)) != sizeof(*hdr)) { >> + DPRINTF("%s: Read of header from drive failed\n", __func__); >> + return -EIO; >> + } > > Why do you turn all errors into -EIO instead of returning the real error > code? (More instances of the same thing follow) > Good point, there's no reason to mask the original error code. >> + >> + vnvram_drv_hdr_be_to_cpu(hdr); >> + >> + return 0; >> +} >> +} > > Kevin > > > -- Regards, Corey Bryant