[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 21/22] blockdev: enable discard by default
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH 21/22] blockdev: enable discard by default |
Date: |
Fri, 22 Feb 2013 22:23:50 +0100 |
From: Paolo Bonzini <address@hidden>
Because discard is now a host parameter, we can always fake it as enabled
in the guest. This is an extension of the current choice to ignore
"not supported" errors from the host when discard_granularity is set
to nonzero.
The default granularity is set to the logical block size or 4k, whichever
is largest, because cluster sizes below 4k are rarely used and 4K is a
typical block size for files.
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
hw/block-common.h | 2 +-
hw/ide/qdev.c | 5 ++++-
hw/scsi-disk.c | 13 ++++++++++---
3 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/hw/block-common.h b/hw/block-common.h
index bb808f7..dd11532 100644
--- a/hw/block-common.h
+++ b/hw/block-common.h
@@ -50,7 +50,7 @@ static inline unsigned int get_physical_block_exp(BlockConf
*conf)
DEFINE_PROP_UINT32("opt_io_size", _state, _conf.opt_io_size, 0), \
DEFINE_PROP_INT32("bootindex", _state, _conf.bootindex, -1), \
DEFINE_PROP_UINT32("discard_granularity", _state, \
- _conf.discard_granularity, 0)
+ _conf.discard_granularity, -1)
#define DEFINE_BLOCK_CHS_PROPERTIES(_state, _conf) \
DEFINE_PROP_UINT32("cyls", _state, _conf.cyls, 0), \
diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c
index c436b38..fd06da7 100644
--- a/hw/ide/qdev.c
+++ b/hw/ide/qdev.c
@@ -143,7 +143,10 @@ static int ide_dev_initfn(IDEDevice *dev, IDEDriveKind
kind)
IDEBus *bus = DO_UPCAST(IDEBus, qbus, dev->qdev.parent_bus);
IDEState *s = bus->ifs + dev->unit;
- if (dev->conf.discard_granularity && dev->conf.discard_granularity != 512)
{
+ if (dev->conf.discard_granularity == -1) {
+ dev->conf.discard_granularity = 512;
+ } else if (dev->conf.discard_granularity &&
+ dev->conf.discard_granularity != 512) {
error_report("discard_granularity must be 512 for ide");
return -1;
}
diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
index 28e75bb..d411586 100644
--- a/hw/scsi-disk.c
+++ b/hw/scsi-disk.c
@@ -41,9 +41,11 @@ do { printf("scsi-disk: " fmt , ## __VA_ARGS__); } while (0)
#include <scsi/sg.h>
#endif
-#define SCSI_DMA_BUF_SIZE 131072
-#define SCSI_MAX_INQUIRY_LEN 256
-#define SCSI_MAX_MODE_LEN 256
+#define SCSI_DMA_BUF_SIZE 131072
+#define SCSI_MAX_INQUIRY_LEN 256
+#define SCSI_MAX_MODE_LEN 256
+
+#define DEFAULT_DISCARD_GRANULARITY 4096
typedef struct SCSIDiskState SCSIDiskState;
@@ -2059,6 +2061,11 @@ static int scsi_initfn(SCSIDevice *dev)
return -1;
}
+ if (s->qdev.conf.discard_granularity == -1) {
+ s->qdev.conf.discard_granularity =
+ MAX(s->qdev.conf.logical_block_size, DEFAULT_DISCARD_GRANULARITY);
+ }
+
if (!s->version) {
s->version = g_strdup(qemu_get_version());
}
--
1.8.1.2
- [Qemu-devel] [PATCH 06/22] qemu-img: add compressed clusters to BlockFragInfo, (continued)
- [Qemu-devel] [PATCH 06/22] qemu-img: add compressed clusters to BlockFragInfo, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 05/22] qemu-img: fix missing space in qemu-img check output, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 12/22] qemu-img: Add compare subcommand, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 11/22] qemu-img: Add "Quiet mode" option, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 15/22] coroutine: move pooling to common code, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 13/22] qemu-iotests: Add qemu-img compare test, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 16/22] coroutine: trim down nesting level in perf_nesting test, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 17/22] block: complete all IOs before .bdrv_truncate, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 19/22] blockdev: add discard suboption to -drive, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 18/22] block: implement BDRV_O_UNMAP, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 21/22] blockdev: enable discard by default,
Kevin Wolf <=
- [Qemu-devel] [PATCH 14/22] qemu-iotests: Test qcow2 image creation options, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 20/22] qemu-nbd: add --discard option, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 22/22] pc: add compatibility machine types for 1.4, Kevin Wolf, 2013/02/22