diff options
| author | Tony Breeds | 2014-09-26 01:14:11 +0200 |
|---|---|---|
| committer | Kevin Wolf | 2014-10-20 13:41:26 +0200 |
| commit | 38c4d0aea3e1264c86e282d99560330adf2b6e25 (patch) | |
| tree | e5e04dcee260d4efe0b352e66f1d7f6ea6c0b83e | |
| parent | qcow2: fix leak of Qcow2DiscardRegion in update_refcount_discard (diff) | |
| download | qemu-38c4d0aea3e1264c86e282d99560330adf2b6e25.tar.gz qemu-38c4d0aea3e1264c86e282d99560330adf2b6e25.tar.xz qemu-38c4d0aea3e1264c86e282d99560330adf2b6e25.zip | |
block/raw-posix: Fix disk corruption in try_fiemap
Using fiemap without FIEMAP_FLAG_SYNC is a known corrupter.
Add the FIEMAP_FLAG_SYNC flag to the FS_IOC_FIEMAP ioctl. This has
the downside of significantly reducing performance.
Reported-By: Michael Steffens <michael_steffens@posteo.de>
Signed-off-by: Tony Breeds <tony@bakeyournoodle.com>
Cc: Kevin Wolf <kwolf@redhat.com>
Cc: Markus Armbruster <armbru@redhat.com>
Cc: Stefan Hajnoczi <stefanha@redhat.com>
Cc: Max Reitz <mreitz@redhat.com>
Cc: Pádraig Brady <pbrady@redhat.com>
Cc: Eric Blake <eblake@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
| -rw-r--r-- | block/raw-posix.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/block/raw-posix.c b/block/raw-posix.c index 86ce4f2607..d672c739c8 100644 --- a/block/raw-posix.c +++ b/block/raw-posix.c @@ -1482,7 +1482,7 @@ static int64_t try_fiemap(BlockDriverState *bs, off_t start, off_t *data, f.fm.fm_start = start; f.fm.fm_length = (int64_t)nb_sectors * BDRV_SECTOR_SIZE; - f.fm.fm_flags = 0; + f.fm.fm_flags = FIEMAP_FLAG_SYNC; f.fm.fm_extent_count = 1; f.fm.fm_reserved = 0; if (ioctl(s->fd, FS_IOC_FIEMAP, &f) == -1) { |
