Max Reitz e6d7ec32dd raw-posix: Fix raw_co_get_block_status() after EOF
As its comment states, raw_co_get_block_status() should unconditionally
return 0 and set *pnum to 0 for after EOF.

An assertion after lseek(..., SEEK_HOLE) tried to catch this case by
asserting that errno != -ENXIO (which would indicate a position after
the EOF); but it should be errno != ENXIO instead. Regardless of that,
there should be no such assertion at all. If bdrv_getlength() returned
an outdated value and the image has been resized outside of qemu,
lseek() will return with errno == ENXIO. Just return that value as an
error then.

Setting *pnum to 0 and returning 0 should not be done here, as in that
case we should update the device length as well. So, from qemu's
perspective, the file has not been resized; it's just that there was an
error querying sectors beyond a certain point (the actual file size).

Additionally, nb_sectors should be clamped against the image end. This
was probably not an issue if FIEMAP or SEEK_HOLE/SEEK_DATA worked, but
the fallback did not take this case into account.

Reported-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Message-id: 1414148280-17949-2-git-send-email-mreitz@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2014-11-03 11:41:47 +00:00
2014-09-18 20:02:01 +01:00
2014-11-03 09:48:41 +00:00
2014-09-04 17:39:07 +01:00
2014-09-25 13:34:03 +01:00
2014-11-02 13:30:00 +01:00
2014-06-16 13:24:35 +02:00
2014-08-29 10:46:58 +01:00
2014-06-23 11:12:28 -04:00
2014-09-16 11:04:09 +02:00
2014-10-24 12:19:11 +01:00
2014-09-26 13:37:06 -04:00
2014-09-26 13:37:06 -04:00
2014-10-10 14:07:08 +01:00
2014-09-26 09:34:39 +01:00
2014-10-24 12:19:11 +01:00
2014-09-22 11:39:45 +01:00
2014-09-22 11:39:45 +01:00
2014-05-24 00:07:29 +04:00
2014-10-02 09:58:14 +02:00
2014-09-19 17:20:11 +01:00
2014-02-17 11:57:23 -05:00
2014-06-05 16:10:33 +02:00
2014-08-01 18:30:08 +01:00
2014-10-27 14:09:27 +00:00
2014-07-07 10:37:40 +00:00

Read the documentation in qemu-doc.html or on http://wiki.qemu-project.org

- QEMU team
Description
No description provided
Readme 404 MiB
Languages
C 82.6%
C++ 6.5%
Python 3.4%
Dylan 2.9%
Shell 1.6%
Other 2.8%