[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 4/6] block: make qiov_is_aligned() public
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH 4/6] block: make qiov_is_aligned() public |
Date: |
Mon, 14 Jan 2013 11:01:59 +0100 |
From: Stefan Hajnoczi <address@hidden>
The qiov_is_aligned() function checks whether a QEMUIOVector meets a
BlockDriverState's alignment requirements. This is needed by
virtio-blk-data-plane so:
1. Move the function from block/raw-posix.c to block/block.c.
2. Make it public in block/block.h.
3. Rename to bdrv_qiov_is_aligned().
4. Change return type from int to bool.
Signed-off-by: Stefan Hajnoczi <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
block.c | 16 ++++++++++++++++
block/raw-posix.c | 18 +-----------------
include/block/block.h | 1 +
3 files changed, 18 insertions(+), 17 deletions(-)
diff --git a/block.c b/block.c
index 14f8202..b5e64ec 100644
--- a/block.c
+++ b/block.c
@@ -4313,6 +4313,22 @@ void *qemu_blockalign(BlockDriverState *bs, size_t size)
return qemu_memalign((bs && bs->buffer_alignment) ? bs->buffer_alignment :
512, size);
}
+/*
+ * Check if all memory in this vector is sector aligned.
+ */
+bool bdrv_qiov_is_aligned(BlockDriverState *bs, QEMUIOVector *qiov)
+{
+ int i;
+
+ for (i = 0; i < qiov->niov; i++) {
+ if ((uintptr_t) qiov->iov[i].iov_base % bs->buffer_alignment) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
void bdrv_set_dirty_tracking(BlockDriverState *bs, int enable)
{
int64_t bitmap_size;
diff --git a/block/raw-posix.c b/block/raw-posix.c
index 0e705ba..c3d7fda 100644
--- a/block/raw-posix.c
+++ b/block/raw-posix.c
@@ -430,22 +430,6 @@ static void raw_reopen_abort(BDRVReopenState *state)
#endif
*/
-/*
- * Check if all memory in this vector is sector aligned.
- */
-static int qiov_is_aligned(BlockDriverState *bs, QEMUIOVector *qiov)
-{
- int i;
-
- for (i = 0; i < qiov->niov; i++) {
- if ((uintptr_t) qiov->iov[i].iov_base % bs->buffer_alignment) {
- return 0;
- }
- }
-
- return 1;
-}
-
static ssize_t handle_aiocb_ioctl(RawPosixAIOData *aiocb)
{
int ret;
@@ -714,7 +698,7 @@ static BlockDriverAIOCB *raw_aio_submit(BlockDriverState
*bs,
* driver that it needs to copy the buffer.
*/
if ((bs->open_flags & BDRV_O_NOCACHE)) {
- if (!qiov_is_aligned(bs, qiov)) {
+ if (!bdrv_qiov_is_aligned(bs, qiov)) {
type |= QEMU_AIO_MISALIGNED;
#ifdef CONFIG_LINUX_AIO
} else if (s->use_aio) {
diff --git a/include/block/block.h b/include/block/block.h
index 0719339..ffd1936 100644
--- a/include/block/block.h
+++ b/include/block/block.h
@@ -349,6 +349,7 @@ void bdrv_img_create(const char *filename, const char *fmt,
void bdrv_set_buffer_alignment(BlockDriverState *bs, int align);
void *qemu_blockalign(BlockDriverState *bs, size_t size);
+bool bdrv_qiov_is_aligned(BlockDriverState *bs, QEMUIOVector *qiov);
#define BDRV_SECTORS_PER_DIRTY_CHUNK 2048
--
1.7.6.5
- [Qemu-devel] [PULL 0/6] Block patches, Kevin Wolf, 2013/01/14
- [Qemu-devel] [PATCH 1/6] block: do not probe zero-sized disks, Kevin Wolf, 2013/01/14
- [Qemu-devel] [PATCH 2/6] sheepdog: implement direct write semantics, Kevin Wolf, 2013/01/14
- [Qemu-devel] [PATCH 4/6] block: make qiov_is_aligned() public,
Kevin Wolf <=
- [Qemu-devel] [PATCH 5/6] dataplane: extract virtio-blk read/write processing into do_rdwr_cmd(), Kevin Wolf, 2013/01/14
- [Qemu-devel] [PATCH 3/6] raw-posix: fix bdrv_aio_ioctl, Kevin Wolf, 2013/01/14
- [Qemu-devel] [PATCH 6/6] dataplane: handle misaligned virtio-blk requests, Kevin Wolf, 2013/01/14
- Re: [Qemu-devel] [PULL 0/6] Block patches, Anthony Liguori, 2013/01/20