# also update debian/changelog
-KVMVER=2.11.1
-KVMPKGREL=5
+KVMVER=2.11.2
+KVMPKGREL=1
KVMPACKAGE = pve-qemu-kvm
KVMSRC = qemu
+pve-qemu-kvm (2.11.2-1) stable; urgency=medium
+
+ * update to 2.11.2
+
+ -- Proxmox Support Team <support@proxmox.com> Mon, 09 Jul 2018 10:06:17 +0200
+
pve-qemu-kvm (2.11.1-5) stable; urgency=medium
* vma: add cache mode option to disk mapping and don't enforce no-flush
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/block/file-posix.c b/block/file-posix.c
-index 36ee89e940..4bff572d07 100644
+index 275953fdc6..b639206879 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -405,7 +405,7 @@ static QemuOptsList raw_runtime_opts = {
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/include/net/net.h b/include/net/net.h
-index 1c55a93588..13ecb9cc8c 100644
+index ab87d426e1..3cb866a359 100644
--- a/include/net/net.h
+++ b/include/net/net.h
-@@ -220,8 +220,9 @@ void qmp_netdev_add(QDict *qdict, QObject **ret, Error **errp);
+@@ -221,8 +221,9 @@ void qmp_netdev_add(QDict *qdict, QObject **ret, Error **errp);
int net_hub_id_for_client(NetClientState *nc, int *id);
NetClientState *net_hub_port_find(int hub_id);
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/qemu-img.c b/qemu-img.c
-index 68b375f998..f8a39dd195 100644
+index bf9de27893..812129ff16 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -2594,7 +2594,8 @@ static int img_info(int argc, char **argv)
qapi_free_BalloonInfo(info);
}
diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c
-index 37cde38982..1feaf77223 100644
+index 651fa70ca6..51585dc7e7 100644
--- a/hw/virtio/virtio-balloon.c
+++ b/hw/virtio/virtio-balloon.c
-@@ -380,8 +380,37 @@ static uint64_t virtio_balloon_get_features(VirtIODevice *vdev, uint64_t f,
+@@ -381,8 +381,37 @@ static uint64_t virtio_balloon_get_features(VirtIODevice *vdev, uint64_t f,
static void virtio_balloon_stat(void *opaque, BalloonInfo *info)
{
VirtIOBalloon *dev = opaque;
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
-index f3d0ebb673..660e42977b 100644
+index 3cc1136535..922a4b8edd 100644
--- a/target/i386/cpu.h
+++ b/target/i386/cpu.h
-@@ -1521,9 +1521,9 @@ uint64_t cpu_get_tsc(CPUX86State *env);
+@@ -1524,9 +1524,9 @@ uint64_t cpu_get_tsc(CPUX86State *env);
#define X86_CPU_TYPE_NAME(name) (name X86_CPU_TYPE_SUFFIX)
#ifdef TARGET_X86_64
2 files changed, 42 insertions(+)
diff --git a/net/net.c b/net/net.c
-index 39ef546708..3681aa2173 100644
+index 0719358d03..10186dfe61 100644
--- a/net/net.c
+++ b/net/net.c
-@@ -1399,6 +1399,33 @@ void hmp_info_network(Monitor *mon, const QDict *qdict)
+@@ -1398,6 +1398,33 @@ void hmp_info_network(Monitor *mon, const QDict *qdict)
}
}
1 file changed, 4 insertions(+)
diff --git a/block/rbd.c b/block/rbd.c
-index a76a5e8755..a33738a254 100644
+index 2de434dfdd..c4732a4b12 100644
--- a/block/rbd.c
+++ b/block/rbd.c
-@@ -642,6 +642,10 @@ static int qemu_rbd_open(BlockDriverState *bs, QDict *options, int flags,
+@@ -643,6 +643,10 @@ static int qemu_rbd_open(BlockDriverState *bs, QDict *options, int flags,
rados_conf_set(s->cluster, "rbd_cache", "true");
}
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/block/gluster.c b/block/gluster.c
-index 0f4265a3a4..8fab26481c 100644
+index d09f4f2283..4e398af5c1 100644
--- a/block/gluster.c
+++ b/block/gluster.c
@@ -32,7 +32,7 @@
#define GERR_INDEX_HINT "hint: check in 'server' array index '%d'\n"
-@@ -396,6 +396,7 @@ static struct glfs *qemu_gluster_glfs_init(BlockdevOptionsGluster *gconf,
+@@ -401,6 +401,7 @@ static struct glfs *qemu_gluster_glfs_init(BlockdevOptionsGluster *gconf,
int old_errno;
SocketAddressList *server;
unsigned long long port;
glfs = glfs_find_preopened(gconf->volume);
if (glfs) {
-@@ -438,9 +439,15 @@ static struct glfs *qemu_gluster_glfs_init(BlockdevOptionsGluster *gconf,
+@@ -443,9 +444,15 @@ static struct glfs *qemu_gluster_glfs_init(BlockdevOptionsGluster *gconf,
}
}
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/block/gluster.c b/block/gluster.c
-index 8fab26481c..24296a39b3 100644
+index 4e398af5c1..453c5824ce 100644
--- a/block/gluster.c
+++ b/block/gluster.c
@@ -41,6 +41,7 @@ typedef struct GlusterAIOCB {
} GlusterAIOCB;
typedef struct BDRVGlusterState {
-@@ -709,8 +710,10 @@ static void gluster_finish_aiocb(struct glfs_fd *fd, ssize_t ret, void *arg)
+@@ -722,8 +723,10 @@ static void gluster_finish_aiocb(struct glfs_fd *fd, ssize_t ret, void *arg)
acb->ret = 0; /* Success */
} else if (ret < 0) {
acb->ret = -errno; /* Read/Write failed */
}
aio_co_schedule(acb->aio_context, acb->coroutine);
-@@ -958,6 +961,7 @@ static coroutine_fn int qemu_gluster_co_pwrite_zeroes(BlockDriverState *bs,
+@@ -971,6 +974,7 @@ static coroutine_fn int qemu_gluster_co_pwrite_zeroes(BlockDriverState *bs,
acb.ret = 0;
acb.coroutine = qemu_coroutine_self();
acb.aio_context = bdrv_get_aio_context(bs);
ret = glfs_zerofill_async(s->fd, offset, size, gluster_finish_aiocb, &acb);
if (ret < 0) {
-@@ -1083,9 +1087,11 @@ static coroutine_fn int qemu_gluster_co_rw(BlockDriverState *bs,
+@@ -1096,9 +1100,11 @@ static coroutine_fn int qemu_gluster_co_rw(BlockDriverState *bs,
acb.aio_context = bdrv_get_aio_context(bs);
if (write) {
ret = glfs_preadv_async(s->fd, qiov->iov, qiov->niov, offset, 0,
gluster_finish_aiocb, &acb);
}
-@@ -1158,6 +1164,7 @@ static coroutine_fn int qemu_gluster_co_flush_to_disk(BlockDriverState *bs)
+@@ -1171,6 +1177,7 @@ static coroutine_fn int qemu_gluster_co_flush_to_disk(BlockDriverState *bs)
acb.ret = 0;
acb.coroutine = qemu_coroutine_self();
acb.aio_context = bdrv_get_aio_context(bs);
ret = glfs_fsync_async(s->fd, gluster_finish_aiocb, &acb);
if (ret < 0) {
-@@ -1204,6 +1211,7 @@ static coroutine_fn int qemu_gluster_co_pdiscard(BlockDriverState *bs,
+@@ -1217,6 +1224,7 @@ static coroutine_fn int qemu_gluster_co_pdiscard(BlockDriverState *bs,
acb.ret = 0;
acb.coroutine = qemu_coroutine_self();
acb.aio_context = bdrv_get_aio_context(bs);
DEF("info", img_info,
diff --git a/qemu-img.c b/qemu-img.c
-index f8a39dd195..876a3623a7 100644
+index 812129ff16..879e7f4502 100644
--- a/qemu-img.c
+++ b/qemu-img.c
-@@ -4088,10 +4088,12 @@ out:
+@@ -4109,10 +4109,12 @@ out:
#define C_IF 04
#define C_OF 010
#define C_SKIP 020
};
struct DdIo {
-@@ -4170,6 +4172,20 @@ static int img_dd_skip(const char *arg,
+@@ -4191,6 +4193,20 @@ static int img_dd_skip(const char *arg,
return 0;
}
static int img_dd(int argc, char **argv)
{
int ret = 0;
-@@ -4210,6 +4226,7 @@ static int img_dd(int argc, char **argv)
+@@ -4231,6 +4247,7 @@ static int img_dd(int argc, char **argv)
{ "if", img_dd_if, C_IF },
{ "of", img_dd_of, C_OF },
{ "skip", img_dd_skip, C_SKIP },
{ NULL, NULL, 0 }
};
const struct option long_options[] = {
-@@ -4288,8 +4305,13 @@ static int img_dd(int argc, char **argv)
+@@ -4309,8 +4326,13 @@ static int img_dd(int argc, char **argv)
arg = NULL;
}
ret = -1;
goto out;
}
-@@ -4301,85 +4323,101 @@ static int img_dd(int argc, char **argv)
+@@ -4322,85 +4344,101 @@ static int img_dd(int argc, char **argv)
goto out;
}
}
if (dd.flags & C_SKIP && (in.offset > INT64_MAX / in.bsz ||
-@@ -4397,11 +4435,17 @@ static int img_dd(int argc, char **argv)
+@@ -4418,11 +4456,17 @@ static int img_dd(int argc, char **argv)
for (out_pos = 0; in_pos < size; block_count++) {
int in_ret, out_ret;
}
if (in_ret < 0) {
error_report("error while reading from input image file: %s",
-@@ -4411,9 +4455,13 @@ static int img_dd(int argc, char **argv)
+@@ -4432,9 +4476,13 @@ static int img_dd(int argc, char **argv)
}
in_pos += in_ret;
create mode 100644 block/vma.c
diff --git a/MAINTAINERS b/MAINTAINERS
-index 0255113470..581d80d144 100644
+index a8e01de523..f688556e0d 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -1950,6 +1950,12 @@ L: qemu-block@nongnu.org
+@@ -1956,6 +1956,12 @@ L: qemu-block@nongnu.org
S: Supported
F: block/vvfat.c
assert(job->pause_count > 0);
job->pause_count--;
diff --git a/configure b/configure
-index 0c6e7572db..3a28a0a092 100755
+index ceec276693..387fb5ad6d 100755
--- a/configure
+++ b/configure
@@ -422,6 +422,7 @@ tcmalloc="no"
supported_cpu="no"
supported_os="no"
-@@ -1313,6 +1314,10 @@ for opt do
+@@ -1315,6 +1316,10 @@ for opt do
;;
--disable-git-update) git_update=no
;;
*)
echo "ERROR: unknown option $opt"
echo "Try '$0 --help' for more information"
-@@ -1561,6 +1566,7 @@ disabled with --disable-FEATURE, default is enabled if available:
+@@ -1563,6 +1568,7 @@ disabled with --disable-FEATURE, default is enabled if available:
crypto-afalg Linux AF_ALG crypto backend driver
vhost-user vhost-user support
capstone capstone disassembler support
NOTE: The object files are built at the place where configure is launched
EOF
-@@ -3890,6 +3896,23 @@ EOF
+@@ -3893,6 +3899,23 @@ EOF
fi
##########################################
# signalfd probe
signalfd="no"
cat > $TMPC << EOF
-@@ -5555,6 +5578,7 @@ echo "avx2 optimization $avx2_opt"
+@@ -5558,6 +5581,7 @@ echo "avx2 optimization $avx2_opt"
echo "replication support $replication"
echo "VxHS block device $vxhs"
echo "capstone $capstone"
if test "$sdl_too_old" = "yes"; then
echo "-> Your SDL version is too old - please upgrade to have SDL support"
-@@ -5998,6 +6022,12 @@ if test "$libusb" = "yes" ; then
+@@ -6001,6 +6025,12 @@ if test "$libusb" = "yes" ; then
echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak
fi
BlockJobTxn *txn, Error **errp);
diff --git a/vma-reader.c b/vma-reader.c
new file mode 100644
-index 0000000000..2000889bd3
+index 0000000000..2b1d1cdab3
--- /dev/null
+++ b/vma-reader.c
@@ -0,0 +1,857 @@
+ }
+
+ if (end_sector <= sector_num) {
-+ error_setg(errp, "got wrong block address - write bejond end");
++ error_setg(errp, "got wrong block address - write beyond end");
+ return -1;
+ }
+
+
+ if (end_sector <= sector_num) {
+ error_setg(errp, "got wrong block address - "
-+ "write bejond end");
++ "write beyond end");
+ return -1;
+ }
+
1 file changed, 26 insertions(+), 3 deletions(-)
diff --git a/qemu-img.c b/qemu-img.c
-index 876a3623a7..2605367c59 100644
+index 879e7f4502..e23285d7d4 100644
--- a/qemu-img.c
+++ b/qemu-img.c
-@@ -4089,11 +4089,13 @@ out:
+@@ -4110,11 +4110,13 @@ out:
#define C_OF 010
#define C_SKIP 020
#define C_OSIZE 040
};
struct DdIo {
-@@ -4186,6 +4188,20 @@ static int img_dd_osize(const char *arg,
+@@ -4207,6 +4209,20 @@ static int img_dd_osize(const char *arg,
return 0;
}
static int img_dd(int argc, char **argv)
{
int ret = 0;
-@@ -4200,12 +4216,14 @@ static int img_dd(int argc, char **argv)
+@@ -4221,12 +4237,14 @@ static int img_dd(int argc, char **argv)
int c, i;
const char *out_fmt = "raw";
const char *fmt = NULL;
};
struct DdIo in = {
.bsz = 512, /* Block size is by default 512 bytes */
-@@ -4227,6 +4245,7 @@ static int img_dd(int argc, char **argv)
+@@ -4248,6 +4266,7 @@ static int img_dd(int argc, char **argv)
{ "of", img_dd_of, C_OF },
{ "skip", img_dd_skip, C_SKIP },
{ "osize", img_dd_osize, C_OSIZE },
{ NULL, NULL, 0 }
};
const struct option long_options[] = {
-@@ -4433,14 +4452,18 @@ static int img_dd(int argc, char **argv)
+@@ -4454,14 +4473,18 @@ static int img_dd(int argc, char **argv)
in.buf = g_new(uint8_t, in.bsz);
1 file changed, 14 insertions(+), 9 deletions(-)
diff --git a/qemu-img.c b/qemu-img.c
-index 2605367c59..73aa18e086 100644
+index e23285d7d4..b3f17184ac 100644
--- a/qemu-img.c
+++ b/qemu-img.c
-@@ -4218,7 +4218,7 @@ static int img_dd(int argc, char **argv)
+@@ -4239,7 +4239,7 @@ static int img_dd(int argc, char **argv)
const char *fmt = NULL;
int64_t size = 0, readsize = 0;
int64_t block_count = 0, out_pos, in_pos;
struct DdInfo dd = {
.flags = 0,
.count = 0,
-@@ -4256,7 +4256,7 @@ static int img_dd(int argc, char **argv)
+@@ -4277,7 +4277,7 @@ static int img_dd(int argc, char **argv)
{ 0, 0, 0, 0 }
};
if (c == EOF) {
break;
}
-@@ -4276,6 +4276,9 @@ static int img_dd(int argc, char **argv)
+@@ -4297,6 +4297,9 @@ static int img_dd(int argc, char **argv)
case 'h':
help();
break;
case 'U':
force_share = true;
break;
-@@ -4416,13 +4419,15 @@ static int img_dd(int argc, char **argv)
+@@ -4437,13 +4440,15 @@ static int img_dd(int argc, char **argv)
size - in.bsz * in.offset, &error_abort);
}
1 file changed, 2 deletions(-)
diff --git a/block/rbd.c b/block/rbd.c
-index a33738a254..7930ef3368 100644
+index c4732a4b12..0374f3db27 100644
--- a/block/rbd.c
+++ b/block/rbd.c
-@@ -642,9 +642,7 @@ static int qemu_rbd_open(BlockDriverState *bs, QDict *options, int flags,
+@@ -643,9 +643,7 @@ static int qemu_rbd_open(BlockDriverState *bs, QDict *options, int flags,
rados_conf_set(s->cluster, "rbd_cache", "true");
}
-Subproject commit 7c1beb52ed86191d9e965444d934adaa2531710f
+Subproject commit 0982a56a551556c704dc15752dabf57b4be1c640