Commit d4f18971 authored by Alberto Garcia's avatar Alberto Garcia Committed by Kevin Wolf
Browse files

vdi: Replace bdrv_{read,write}() with bdrv_{pread,pwrite}()



There's only a couple of bdrv_read() and bdrv_write() calls left in
the vdi code, and they can be trivially replaced with the byte-based
bdrv_pread() and bdrv_pwrite().

Signed-off-by: default avatarAlberto Garcia <berto@igalia.com>
Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
parent e3b4257d
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -171,6 +171,8 @@ typedef struct {
    uint64_t unused2[7];
} QEMU_PACKED VdiHeader;

QEMU_BUILD_BUG_ON(sizeof(VdiHeader) != 512);

typedef struct {
    /* The block map entries are little endian (even in memory). */
    uint32_t *bmap;
@@ -384,7 +386,7 @@ static int vdi_open(BlockDriverState *bs, QDict *options, int flags,

    logout("\n");

    ret = bdrv_read(bs->file, 0, (uint8_t *)&header, 1);
    ret = bdrv_pread(bs->file, 0, &header, sizeof(header));
    if (ret < 0) {
        goto fail;
    }
@@ -484,8 +486,8 @@ static int vdi_open(BlockDriverState *bs, QDict *options, int flags,
        goto fail;
    }

    ret = bdrv_read(bs->file, s->bmap_sector, (uint8_t *)s->bmap,
                    bmap_size);
    ret = bdrv_pread(bs->file, header.offset_bmap, s->bmap,
                     bmap_size * SECTOR_SIZE);
    if (ret < 0) {
        goto fail_free_bmap;
    }
@@ -704,7 +706,7 @@ nonallocating_write:
        assert(VDI_IS_ALLOCATED(bmap_first));
        *header = s->header;
        vdi_header_to_le(header);
        ret = bdrv_write(bs->file, 0, block, 1);
        ret = bdrv_pwrite(bs->file, 0, block, sizeof(VdiHeader));
        g_free(block);
        block = NULL;

@@ -722,10 +724,11 @@ nonallocating_write:
        base = ((uint8_t *)&s->bmap[0]) + bmap_first * SECTOR_SIZE;
        logout("will write %u block map sectors starting from entry %u\n",
               n_sectors, bmap_first);
        ret = bdrv_write(bs->file, offset, base, n_sectors);
        ret = bdrv_pwrite(bs->file, offset * SECTOR_SIZE, base,
                          n_sectors * SECTOR_SIZE);
    }

    return ret;
    return ret < 0 ? ret : 0;
}

static int coroutine_fn vdi_co_do_create(BlockdevCreateOptions *create_options,