qemu-devel
[Top][All Lists]
Advanced

[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?



reply via email to

[Prev in Thread] Current Thread [Next in Thread]