diff options
authoraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>2009-04-22 20:20:00 +0000
committeraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>2009-04-22 20:20:00 +0000
commite268ca52328eb0460ae0d10b7f4313a63d5b000c (patch)
tree27a36b418653496829c54f59b31e9a2ad347b2e8 /block_int.h
parentxen: add -vga xenfb option, configure xenfb (Gerd Hoffmann) (diff)
implement qemu_blockalign (Stefano Stabellini)
this patch adds a buffer_alignment field to BlockDriverState and implements a qemu_blockalign function that uses that field to allocate a memory aligned buffer to be used by the block driver. buffer_alignment is initialized to 512 but each block driver can set a different value (at the moment none of them do). This patch modifies ide.c, block-qcow.c, block-qcow2.c and block.c to use qemu_blockalign instead of qemu_memalign. There is only one place left that still uses qemu_memalign to allocate buffers used by block drivers that is posix-aio-compat:handle_aiocb_rw because it is not possible to get the BlockDriverState from that function. However I think it is not important because posix-aio-compat already deals with driver specific code so it is supposed to know its own needs. Signed-off-by: Stefano Stabellini <> Signed-off-by: Anthony Liguori <> git-svn-id: svn:// c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'block_int.h')
1 files changed, 5 insertions, 0 deletions
diff --git a/block_int.h b/block_int.h
index e10b9069f..9d119404c 100644
--- a/block_int.h
+++ b/block_int.h
@@ -145,6 +145,9 @@ struct BlockDriverState {
/* Whether the disk can expand beyond total_sectors */
int growable;
+ /* the memory alignment required for the buffers handled by this driver */
+ int buffer_alignment;
/* NOTE: the following infos are only hints for real hardware
drivers. They are not used by the block driver */
int cyls, heads, secs, translation;
@@ -173,6 +176,8 @@ void *qemu_aio_get_pool(AIOPool *pool, BlockDriverState *bs,
BlockDriverCompletionFunc *cb, void *opaque);
void qemu_aio_release(void *p);
+void *qemu_blockalign(BlockDriverState *bs, size_t size);
extern BlockDriverState *bdrv_first;
#endif /* BLOCK_INT_H */