aboutsummaryrefslogtreecommitdiff
path: root/block
diff options
context:
space:
mode:
authorMarcelo Tosatti <mtosatti@redhat.com>2009-09-14 07:07:28 -0300
committerMarcelo Tosatti <mtosatti@redhat.com>2009-09-14 07:07:28 -0300
commit8ee4a93637fd50121edbe2d50ae965da2fcfa949 (patch)
treee4fa00ce41d91206f26a4406364e7b9cef831495 /block
parentMerge commit '9453c5bc2634fdbdd05450034c21a58806d366a4' into upstream-merge (diff)
parentram: remove support for loading v1 (diff)
downloadqemu-kvm-8ee4a93637fd50121edbe2d50ae965da2fcfa949.tar.gz
qemu-kvm-8ee4a93637fd50121edbe2d50ae965da2fcfa949.tar.bz2
qemu-kvm-8ee4a93637fd50121edbe2d50ae965da2fcfa949.zip
Merge commit '1a621c8dc9e4dcc9d385bdd2c24c5b5dbfd0ebe4' into upstream-merge
* commit '1a621c8dc9e4dcc9d385bdd2c24c5b5dbfd0ebe4': (51 commits) ram: remove support for loading v1 move mux focus field from CharDriverState to MuxDriver monitor: fix muxing qdev: add parser for chardev properties Allow -serial chardev:<name> convert udp chardev to QemuOpts. convert mux chardev to QemuOpts. convert vc chardev to QemuOpts. convert tty + parport chardevs to QemuOpts. convert windows console chardev to QemuOpts. convert braille chardev to QemuOpts. convert msmouse chardev to QemuOpts. convert stdio chardev to QemuOpts. convert pty chardev to QemuOpts. convert unix+tcp chardevs to QemuOpts. sockets: add inet_listen_opts sockets: add inet_connect_opts sockets: add unix_*_opts for windows. sockets: add unix_listen_opts sockets: add unix_connect_opts ... Conflicts: vl.c Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'block')
-rw-r--r--block/cow.c2
-rw-r--r--block/raw-posix-aio.h3
-rw-r--r--block/raw-posix.c19
3 files changed, 21 insertions, 3 deletions
diff --git a/block/cow.c b/block/cow.c
index 84818f103..a70854e63 100644
--- a/block/cow.c
+++ b/block/cow.c
@@ -258,7 +258,7 @@ static int cow_create(const char *filename, QEMUOptionParameter *options)
static void cow_flush(BlockDriverState *bs)
{
BDRVCowState *s = bs->opaque;
- fsync(s->fd);
+ qemu_fdatasync(s->fd);
}
static QEMUOptionParameter cow_create_options[] = {
diff --git a/block/raw-posix-aio.h b/block/raw-posix-aio.h
index 244bc8b79..a2d4348ee 100644
--- a/block/raw-posix-aio.h
+++ b/block/raw-posix-aio.h
@@ -17,8 +17,9 @@
#define QEMU_AIO_READ 0x0001
#define QEMU_AIO_WRITE 0x0002
#define QEMU_AIO_IOCTL 0x0004
+#define QEMU_AIO_FLUSH 0x0008
#define QEMU_AIO_TYPE_MASK \
- (QEMU_AIO_READ|QEMU_AIO_WRITE|QEMU_AIO_IOCTL)
+ (QEMU_AIO_READ|QEMU_AIO_WRITE|QEMU_AIO_IOCTL|QEMU_AIO_FLUSH)
/* AIO flags */
#define QEMU_AIO_MISALIGNED 0x1000
diff --git a/block/raw-posix.c b/block/raw-posix.c
index f9792d911..dfc4a316e 100644
--- a/block/raw-posix.c
+++ b/block/raw-posix.c
@@ -576,6 +576,18 @@ static BlockDriverAIOCB *raw_aio_writev(BlockDriverState *bs,
cb, opaque, QEMU_AIO_WRITE);
}
+static BlockDriverAIOCB *raw_aio_flush(BlockDriverState *bs,
+ BlockDriverCompletionFunc *cb, void *opaque)
+{
+ BDRVRawState *s = bs->opaque;
+
+ if (fd_open(bs) < 0)
+ return NULL;
+
+ return paio_submit(bs, s->aio_ctx, s->fd, 0, NULL, 0,
+ cb, opaque, QEMU_AIO_FLUSH);
+}
+
static void raw_close(BlockDriverState *bs)
{
BDRVRawState *s = bs->opaque;
@@ -725,7 +737,7 @@ static int raw_create(const char *filename, QEMUOptionParameter *options)
static void raw_flush(BlockDriverState *bs)
{
BDRVRawState *s = bs->opaque;
- fsync(s->fd);
+ qemu_fdatasync(s->fd);
}
@@ -751,6 +763,7 @@ static BlockDriver bdrv_raw = {
.bdrv_aio_readv = raw_aio_readv,
.bdrv_aio_writev = raw_aio_writev,
+ .bdrv_aio_flush = raw_aio_flush,
.bdrv_truncate = raw_truncate,
.bdrv_getlength = raw_getlength,
@@ -1004,6 +1017,7 @@ static BlockDriver bdrv_host_device = {
.bdrv_aio_readv = raw_aio_readv,
.bdrv_aio_writev = raw_aio_writev,
+ .bdrv_aio_flush = raw_aio_flush,
.bdrv_read = raw_read,
.bdrv_write = raw_write,
@@ -1098,6 +1112,7 @@ static BlockDriver bdrv_host_floppy = {
.bdrv_aio_readv = raw_aio_readv,
.bdrv_aio_writev = raw_aio_writev,
+ .bdrv_aio_flush = raw_aio_flush,
.bdrv_read = raw_read,
.bdrv_write = raw_write,
@@ -1178,6 +1193,7 @@ static BlockDriver bdrv_host_cdrom = {
.bdrv_aio_readv = raw_aio_readv,
.bdrv_aio_writev = raw_aio_writev,
+ .bdrv_aio_flush = raw_aio_flush,
.bdrv_read = raw_read,
.bdrv_write = raw_write,
@@ -1297,6 +1313,7 @@ static BlockDriver bdrv_host_cdrom = {
.bdrv_aio_readv = raw_aio_readv,
.bdrv_aio_writev = raw_aio_writev,
+ .bdrv_aio_flush = raw_aio_flush,
.bdrv_read = raw_read,
.bdrv_write = raw_write,