|
|
9ae3a8 |
From 3015984eb6778214d381cf7de32d8ab81e277728 Mon Sep 17 00:00:00 2001
|
|
|
9ae3a8 |
From: Kevin Wolf <kwolf@redhat.com>
|
|
|
9ae3a8 |
Date: Thu, 5 Dec 2013 13:01:46 +0100
|
|
|
9ae3a8 |
Subject: [PATCH 07/37] block: Detect unaligned length in bdrv_qiov_is_aligned()
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
Message-id: <1392117622-28812-8-git-send-email-kwolf@redhat.com>
|
|
|
9ae3a8 |
Patchwork-id: 57172
|
|
|
9ae3a8 |
O-Subject: [RHEL-7.0 qemu-kvm PATCH v2 07/37] block: Detect unaligned length in bdrv_qiov_is_aligned()
|
|
|
9ae3a8 |
Bugzilla: 748906
|
|
|
9ae3a8 |
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
|
|
|
9ae3a8 |
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
|
|
|
9ae3a8 |
RH-Acked-by: Max Reitz <mreitz@redhat.com>
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
For an O_DIRECT request to succeed, it's not only necessary that all
|
|
|
9ae3a8 |
base addresses in the qiov are aligned, but also that each length in it
|
|
|
9ae3a8 |
is aligned.
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
|
|
9ae3a8 |
Reviewed-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
|
|
|
9ae3a8 |
Reviewed-by: Max Reitz <mreitz@redhat.com>
|
|
|
9ae3a8 |
(cherry picked from commit 1ff735bdc417945bc6df1857861b127644b3f461)
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
|
|
9ae3a8 |
---
|
|
|
9ae3a8 |
block.c | 3 +++
|
|
|
9ae3a8 |
1 file changed, 3 insertions(+)
|
|
|
9ae3a8 |
---
|
|
|
9ae3a8 |
block.c | 3 +++
|
|
|
9ae3a8 |
1 files changed, 3 insertions(+), 0 deletions(-)
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
diff --git a/block.c b/block.c
|
|
|
9ae3a8 |
index f62acbd..6c98ff7 100644
|
|
|
9ae3a8 |
--- a/block.c
|
|
|
9ae3a8 |
+++ b/block.c
|
|
|
9ae3a8 |
@@ -4743,6 +4743,9 @@ bool bdrv_qiov_is_aligned(BlockDriverState *bs, QEMUIOVector *qiov)
|
|
|
9ae3a8 |
if ((uintptr_t) qiov->iov[i].iov_base % bs->buffer_alignment) {
|
|
|
9ae3a8 |
return false;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
+ if (qiov->iov[i].iov_len % bs->buffer_alignment) {
|
|
|
9ae3a8 |
+ return false;
|
|
|
9ae3a8 |
+ }
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
return true;
|
|
|
9ae3a8 |
--
|
|
|
9ae3a8 |
1.7.1
|
|
|
9ae3a8 |
|