[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 16/18] block: default physical block size to host
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH v2 16/18] block: default physical block size to host block size |
Date: |
Thu, 26 Jan 2012 18:22:47 +0100 |
Hopefully, this will help operating systems in making less misaligned
I/O operations. Not really true for Linux, but why not try.
Signed-off-by: Paolo Bonzini <address@hidden>
---
block.c | 17 +++++++++++++++++
block.h | 15 ++-------------
2 files changed, 19 insertions(+), 13 deletions(-)
diff --git a/block.c b/block.c
index 33ccc23..0fce655 100644
--- a/block.c
+++ b/block.c
@@ -4136,3 +4136,20 @@ bool block_job_is_cancelled(BlockJob *job)
{
return job->cancelled;
}
+
+unsigned int get_physical_block_exp(BlockConf *conf)
+{
+ unsigned int exp = 0, size;
+
+ if (conf->physical_block_size || !conf->bs) {
+ size = conf->physical_block_size;
+ } else {
+ size = conf->bs->host_block_size;
+ }
+
+ for (; size > conf->logical_block_size; size >>= 1) {
+ exp++;
+ }
+
+ return exp;
+}
diff --git a/block.h b/block.h
index 34dc925..4270f67 100644
--- a/block.h
+++ b/block.h
@@ -405,25 +405,14 @@ typedef struct BlockConf {
uint32_t discard_granularity;
} BlockConf;
-static inline unsigned int get_physical_block_exp(BlockConf *conf)
-{
- unsigned int exp = 0, size;
-
- for (size = conf->physical_block_size;
- size > conf->logical_block_size;
- size >>= 1) {
- exp++;
- }
-
- return exp;
-}
+unsigned int get_physical_block_exp(BlockConf *conf);
#define DEFINE_BLOCK_PROPERTIES(_state, _conf) \
DEFINE_PROP_DRIVE("drive", _state, _conf.bs), \
DEFINE_PROP_UINT16("logical_block_size", _state, \
_conf.logical_block_size, 512), \
DEFINE_PROP_UINT16("physical_block_size", _state, \
- _conf.physical_block_size, 512), \
+ _conf.physical_block_size, 0), \
DEFINE_PROP_UINT16("min_io_size", _state, _conf.min_io_size, 0), \
DEFINE_PROP_UINT32("opt_io_size", _state, _conf.opt_io_size, 0), \
DEFINE_PROP_INT32("bootindex", _state, _conf.bootindex, -1), \
--
1.7.7.6
- [Qemu-devel] [PATCH v2 05/18] block: remove enable_write_cache, (continued)
- [Qemu-devel] [PATCH v2 05/18] block: remove enable_write_cache, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 06/18] block: move flag bits together, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 07/18] raw: remove the aligned_buf, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 09/18] block: add host_block_size, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 11/18] iscsi: save host block size, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 08/18] block: rename buffer_alignment to guest_block_size, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 10/18] raw: probe host_block_size, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 12/18] block: allow waiting only for overlapping writes, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 14/18] block: protect against "torn reads" for guest_block_size > host_block_size, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 17/18] block: default min_io_size to host block size when doing rmw, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 16/18] block: default physical block size to host block size,
Paolo Bonzini <=
- [Qemu-devel] [PATCH v2 18/18] qemu-io: add blocksize argument to open, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 15/18] block: align and serialize I/O when guest_block_size < host_block_size, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 13/18] block: allow waiting at arbitrary granularity, Paolo Bonzini, 2012/01/26