[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v6 10/20] block: vhdx - add log write support
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [PATCH v6 10/20] block: vhdx - add log write support |
Date: |
Tue, 1 Oct 2013 15:04:15 +0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Wed, Sep 25, 2013 at 05:02:55PM -0400, Jeff Cody wrote:
> +static int vhdx_log_write(BlockDriverState *bs, BDRVVHDXState *s,
> + void *data, uint32_t length, uint64_t offset)
> +{
> + int ret = 0;
> + void *buffer = NULL;
> + void *merged_sector = NULL;
> + void *data_tmp, *sector_write;
> + unsigned int i;
> + int sector_offset;
> + uint32_t desc_sectors, sectors, total_length;
> + uint32_t sectors_written = 0;
> + uint32_t aligned_length;
> + uint32_t leading_length = 0;
> + uint32_t trailing_length = 0;
> + uint32_t partial_sectors = 0;
> + uint32_t bytes_written = 0;
> + uint64_t file_offset;
> + VHDXHeader *header;
> + VHDXLogEntryHeader new_hdr;
> + VHDXLogDescriptor *new_desc = NULL;
> + VHDXLogDataSector *data_sector = NULL;
> + MSGUID new_guid = { 0 };
> +
> + header = s->headers[s->curr_header];
> +
> + /* need to have offset read data, and be on 4096 byte boundary */
> +
> + if (length > header->log_length) {
> + /* no log present. we could create a log here instead of failing */
> + ret = -EINVAL;
> + goto exit;
> + }
> +
> + if (guid_eq(header->log_guid, zero_guid)) {
> + vhdx_guid_generate(&new_guid);
> + vhdx_update_headers(bs, s, false, &new_guid);
> + } else {
> + /* currently, we require that the log be flushed after
> + * every write. */
> + ret = -ENOTSUP;
Missing goto exit?
- Re: [Qemu-devel] [PATCH v6 10/20] block: vhdx - add log write support,
Stefan Hajnoczi <=