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 <cor...@linux.vnet.ibm.com>
> +/* > + * 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. > + > +/* > + * 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) > + > + vnvram_drv_hdr_be_to_cpu(hdr); > + > + return 0; > +} > +} Kevin