[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-commits] [qemu/qemu] a410a7: backup: allow target without .bdrv_ge
From: |
GitHub |
Subject: |
[Qemu-commits] [qemu/qemu] a410a7: backup: allow target without .bdrv_get_info |
Date: |
Mon, 13 Mar 2017 11:15:09 -0700 |
Branch: refs/heads/master
Home: https://github.com/qemu/qemu
Commit: a410a7f1af725cee94c7c847ddc85be043d88439
https://github.com/qemu/qemu/commit/a410a7f1af725cee94c7c847ddc85be043d88439
Author: Vladimir Sementsov-Ogievskiy <address@hidden>
Date: 2017-03-13 (Mon, 13 Mar 2017)
Changed paths:
M block/backup.c
Log Message:
-----------
backup: allow target without .bdrv_get_info
Currently backup to nbd target is broken, as nbd doesn't have
.bdrv_get_info realization.
Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
Commit: 9103f1ceb46614b150bcbc3c9a4fbc72b47fedcc
https://github.com/qemu/qemu/commit/9103f1ceb46614b150bcbc3c9a4fbc72b47fedcc
Author: Fam Zheng <address@hidden>
Date: 2017-03-13 (Mon, 13 Mar 2017)
Changed paths:
M block/file-posix.c
Log Message:
-----------
file-posix: Consider max_segments for BlockLimits.max_transfer
BlockLimits.max_transfer can be too high without this fix, guest will
encounter I/O error or even get paused with werror=stop or rerror=stop. The
cause is explained below.
Linux has a separate limit, /sys/block/.../queue/max_segments, which in
the worst case can be more restrictive than the BLKSECTGET which we
already consider (note that they are two different things). So, the
failure scenario before this patch is:
1) host device has max_sectors_kb = 4096 and max_segments = 64;
2) guest learns max_sectors_kb limit from QEMU, but doesn't know
max_segments;
3) guest issues e.g. a 512KB request thinking it's okay, but actually
it's not, because it will be passed through to host device as an
SG_IO req that has niov > 64;
4) host kernel doesn't like the segmenting of the request, and returns
-EINVAL;
This patch checks the max_segments sysfs entry for the host device and
calculates a "conservative" bytes limit using the page size, which is
then merged into the existing max_transfer limit. Guest will discover
this from the usual virtual block device interfaces. (In the case of
scsi-generic, it will be done in the INQUIRY reply interception in
device model.)
The other possibility is to actually propagate it as a separate limit,
but it's not better. On the one hand, there is a big complication: the
limit is per-LUN in QEMU PoV (because we can attach LUNs from different
host HBAs to the same virtio-scsi bus), but the channel to communicate
it in a per-LUN manner is missing down the stack; on the other hand,
two limits versus one doesn't change much about the valid size of I/O
(because guest has no control over host segmenting).
Also, the idea to fall back to bounce buffering in QEMU, upon -EINVAL,
was explored. Unfortunately there is no neat way to ensure the bounce
buffer is less segmented (in terms of DMA addr) than the guest buffer.
Practically, this bug is not very common. It is only reported on a
Emulex (lpfc), so it's okay to get it fixed in the easier way.
Reviewed-by: Paolo Bonzini <address@hidden>
Signed-off-by: Fam Zheng <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
Commit: e32ccbc6e9ff95330e916fd72c541894d440fcd5
https://github.com/qemu/qemu/commit/e32ccbc6e9ff95330e916fd72c541894d440fcd5
Author: Eric Blake <address@hidden>
Date: 2017-03-13 (Mon, 13 Mar 2017)
Changed paths:
M MAINTAINERS
M block/Makefile.objs
R block/archipelago.c
M configure
M qapi/block-core.json
M tests/qemu-iotests/025
M tests/qemu-iotests/common
M tests/qemu-iotests/common.filter
M tests/qemu-iotests/common.rc
Log Message:
-----------
block: Drop unmaintained 'archipelago' driver
The driver has failed to build since commit da34e65, in qemu 2.6,
due to a missing include of qapi/error.h for error_setg().
Since no one has complained in three releases, it is easier to
remove the dead code than to keep it around, especially since it
is not being built by default and therefore prone to bitrot.
Signed-off-by: Eric Blake <address@hidden>
Reviewed-by: Max Reitz <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
Commit: 666a9543fa957169b6e25805aac88ca72c08f0b5
https://github.com/qemu/qemu/commit/666a9543fa957169b6e25805aac88ca72c08f0b5
Author: Eric Blake <address@hidden>
Date: 2017-03-13 (Mon, 13 Mar 2017)
Changed paths:
M block/backup.c
Log Message:
-----------
backup: React to bdrv_is_allocated() errors
If bdrv_is_allocated() fails, we should immediately do the backup
error action, rather than attempting backup_do_cow() (although
that will likely fail too).
Signed-off-by: Eric Blake <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
Commit: 6f712ee08036f4e8066cdddcfed288bf01914e55
https://github.com/qemu/qemu/commit/6f712ee08036f4e8066cdddcfed288bf01914e55
Author: Eric Blake <address@hidden>
Date: 2017-03-13 (Mon, 13 Mar 2017)
Changed paths:
M block/vvfat.c
Log Message:
-----------
vvfat: React to bdrv_is_allocated() errors
If bdrv_is_allocated() fails, we should react to that failure.
For 2 of the 3 callers, reporting the error was easy. But in
cluster_was_modified() and its lone caller
get_cluster_count_for_direntry(), it's rather invasive to update
the logic to pass the error back; so there, I went with merely
documenting the issue by changing the return type to bool (in
all likelihood, treating the cluster as modified will then
trigger a read which will also fail, and eventually get to an
error - but given the appalling number of abort() calls in this
code, I'm not making it any worse).
Signed-off-by: Eric Blake <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
Commit: 7d66b1fbd2112a0c1433ad7106d74c7c39e57f5f
https://github.com/qemu/qemu/commit/7d66b1fbd2112a0c1433ad7106d74c7c39e57f5f
Author: Eric Blake <address@hidden>
Date: 2017-03-13 (Mon, 13 Mar 2017)
Changed paths:
M migration/block.c
Log Message:
-----------
migration: Document handling of bdrv_is_allocated() errors
Migration is the only code left in the tree that does not react
to bdrv_is_allocated() failures. But as there is no useful way
to react to the failure, and we are merely skipping unallocated
sectors on success, just document that our choice of handling
is intended.
Signed-off-by: Eric Blake <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
Commit: 466787fbca9b25b47365b3d2c09d308df67a61db
https://github.com/qemu/qemu/commit/466787fbca9b25b47365b3d2c09d308df67a61db
Author: Kevin Wolf <address@hidden>
Date: 2017-03-13 (Mon, 13 Mar 2017)
Changed paths:
M block.c
Log Message:
-----------
block: Remove check_new_perm from bdrv_replace_child()
All callers pass false now, so the parameter can go away again.
Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Commit: b64aa441955b9aa72a05456650303015ac2bea28
https://github.com/qemu/qemu/commit/b64aa441955b9aa72a05456650303015ac2bea28
Author: Kevin Wolf <address@hidden>
Date: 2017-03-13 (Mon, 13 Mar 2017)
Changed paths:
M block/io.c
Log Message:
-----------
block: Request block status from *file for BDRV_BLOCK_RAW
This fixes bdrv_co_get_block_status() for the bdrv_mirror_top block
driver, which must fall through to bs->backing instead of bs->file.
Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Commit: 91965658664cc5da412049de0dd309d50ac09917
https://github.com/qemu/qemu/commit/91965658664cc5da412049de0dd309d50ac09917
Author: Kevin Wolf <address@hidden>
Date: 2017-03-13 (Mon, 13 Mar 2017)
Changed paths:
M block/commit.c
Log Message:
-----------
commit: Implement bdrv_commit_top.bdrv_co_get_block_status
In some cases, bdrv_co_get_block_status() is called recursively for the
whole backing chain. The automatically inserted bdrv_commit_top filter
driver must not stop the recursion, so implement a callback that simply
forwards the request to bs->backing.
Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Commit: 9e7e940c3dc9d9643065dc0f64eb51efca954e54
https://github.com/qemu/qemu/commit/9e7e940c3dc9d9643065dc0f64eb51efca954e54
Author: Kevin Wolf <address@hidden>
Date: 2017-03-13 (Mon, 13 Mar 2017)
Changed paths:
M block.c
Log Message:
-----------
block: Refresh filename after changing backing file
In bdrv_open_inherit(), the filename is refreshed after opening the
backing file, but we neglected to do the same when the backing file
changes later.
Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Commit: fd4a6493bb7c5f9bea0e7d9de09ccc0d573e3789
https://github.com/qemu/qemu/commit/fd4a6493bb7c5f9bea0e7d9de09ccc0d573e3789
Author: Kevin Wolf <address@hidden>
Date: 2017-03-13 (Mon, 13 Mar 2017)
Changed paths:
M block/mirror.c
Log Message:
-----------
mirror: Implement .bdrv_refresh_filename
We want query-block to return the right filename, even if a mirror job
put a bdrv_mirror_top on top of the actual image format driver. Let
bdrv_mirror_top.bdrv_refresh_filename get the filename from its backing
file.
Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Commit: dcbf37ce41a52698550f8f8b2f14b5e6fee22d2d
https://github.com/qemu/qemu/commit/dcbf37ce41a52698550f8f8b2f14b5e6fee22d2d
Author: Kevin Wolf <address@hidden>
Date: 2017-03-13 (Mon, 13 Mar 2017)
Changed paths:
M block/commit.c
Log Message:
-----------
commit: Implement .bdrv_refresh_filename
We want query-block to return the right filename, even if a commit job
put a bdrv_commit_top on top of the actual image format driver. Let
bdrv_commit_top.bdrv_refresh_filename get the filename from its backing
file.
Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Commit: 5bac3c39c82e149515c10643acafd1d292433775
https://github.com/qemu/qemu/commit/5bac3c39c82e149515c10643acafd1d292433775
Author: Peter Maydell <address@hidden>
Date: 2017-03-13 (Mon, 13 Mar 2017)
Changed paths:
M MAINTAINERS
M block.c
M block/Makefile.objs
R block/archipelago.c
M block/backup.c
M block/commit.c
M block/file-posix.c
M block/io.c
M block/mirror.c
M block/vvfat.c
M configure
M migration/block.c
M qapi/block-core.json
M tests/qemu-iotests/025
M tests/qemu-iotests/common
M tests/qemu-iotests/common.filter
M tests/qemu-iotests/common.rc
Log Message:
-----------
Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
Block layer fixes for 2.9.0-rc1
# gpg: Signature made Mon 13 Mar 2017 11:53:16 GMT
# gpg: using RSA key 0x7F09B272C88F2FD6
# gpg: Good signature from "Kevin Wolf <address@hidden>"
# Primary key fingerprint: DC3D EB15 9A9A F95D 3D74 56FE 7F09 B272 C88F 2FD6
* remotes/kevin/tags/for-upstream:
commit: Implement .bdrv_refresh_filename
mirror: Implement .bdrv_refresh_filename
block: Refresh filename after changing backing file
commit: Implement bdrv_commit_top.bdrv_co_get_block_status
block: Request block status from *file for BDRV_BLOCK_RAW
block: Remove check_new_perm from bdrv_replace_child()
migration: Document handling of bdrv_is_allocated() errors
vvfat: React to bdrv_is_allocated() errors
backup: React to bdrv_is_allocated() errors
block: Drop unmaintained 'archipelago' driver
file-posix: Consider max_segments for BlockLimits.max_transfer
backup: allow target without .bdrv_get_info
Signed-off-by: Peter Maydell <address@hidden>
Compare: https://github.com/qemu/qemu/compare/f962709c69a0...5bac3c39c82e
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemu-commits] [qemu/qemu] a410a7: backup: allow target without .bdrv_get_info,
GitHub <=