1. 02 4月, 2019 22 次提交
  2. 01 4月, 2019 7 次提交
    • E
      nbd/client: Trace server noncompliance on structured reads · 75d34eb9
      Eric Blake 提交于
      Just as we recently added a trace for a server sending block status
      that doesn't match the server's advertised minimum block alignment,
      let's do the same for read chunks.  But since qemu 3.1 is such a
      server (because it advertised 512-byte alignment, but when serving a
      file that ends in data but is not sector-aligned, NBD_CMD_READ would
      detect a mid-sector change between data and hole at EOF and the
      resulting read chunks are unaligned), we don't want to change our
      behavior of otherwise tolerating unaligned reads.
      
      Note that even though we fixed the server for 4.0 to advertise an
      actual block alignment (which gets rid of the unaligned reads at EOF
      for posix files), we can still trigger it via other means:
      
      $ qemu-nbd --image-opts driver=blkdebug,align=512,image.driver=file,image.filename=/path/to/non-aligned-file
      
      Arguably, that is a bug in the blkdebug block status function, for
      leaking a block status that is not aligned. It may also be possible to
      observe issues with a backing layer with smaller alignment than the
      active layer, although so far I have been unable to write a reliable
      iotest for that scenario.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20190330165349.32256-1-eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      75d34eb9
    • E
      nbd/server: Advertise actual minimum block size · b0245d64
      Eric Blake 提交于
      Both NBD_CMD_BLOCK_STATUS and structured NBD_CMD_READ will split their
      reply according to bdrv_block_status() boundaries. If the block device
      has a request_alignment smaller than 512, but we advertise a block
      alignment of 512 to the client, then this can result in the server
      reply violating client expectations by reporting a smaller region of
      the export than what the client is permitted to address (although this
      is less of an issue for qemu 4.0 clients, given recent client patches
      to overlook our non-compliance at EOF).  Since it's always better to
      be strict in what we send, it is worth advertising the actual minimum
      block limit rather than blindly rounding it up to 512.
      
      Note that this patch is not foolproof - it is still possible to
      provoke non-compliant server behavior using:
      
      $ qemu-nbd --image-opts driver=blkdebug,align=512,image.driver=file,image.filename=/path/to/non-aligned-file
      
      That is arguably a bug in the blkdebug driver (it should never pass
      back block status smaller than its alignment, even if it has to make
      multiple bdrv_get_status calls and determine the
      least-common-denominator status among the group to return). It may
      also be possible to observe issues with a backing layer with smaller
      alignment than the active layer, although so far I have been unable to
      write a reliable iotest for that scenario (but again, an issue like
      that could be argued to be a bug in the block layer, or something
      where we need a flag to bdrv_block_status() to state whether the
      result must be aligned to the current layer's limits or can be
      subdivided for accuracy when chasing backing files).
      
      Anyways, as blkdebug is not normally used, and as this patch makes our
      server more interoperable with qemu 3.1 clients, it is worth applying
      now, even while we still work on a larger patch series for the 4.1
      timeframe to have byte-accurate file lengths.
      
      Note that the iotests output changes - for 223 and 233, we can see the
      server's better granularity advertisement; and for 241, the three test
      cases have the following effects:
      - natural alignment: the server's smaller alignment is now advertised,
      and the hole reported at EOF is now the right result; we've gotten rid
      of the server's non-compliance
      - forced server alignment: the server still advertises 512 bytes, but
      still sends a mid-sector hole. This is still a server compliance bug,
      which needs to be fixed in the block layer in a later patch; output
      does not change because the client is already being tolerant of the
      non-compliance
      - forced client alignment: the server's smaller alignment means that
      the client now sees the server's status change mid-sector without any
      protocol violations, but the fact that the map shows an unaligned
      mid-sector hole is evidence of the block layer problems with aligned
      block status, to be fixed in a later patch
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20190329042750.14704-7-eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      [eblake: rebase to enhanced iotest 241 coverage]
      b0245d64
    • E
      block: Add bdrv_get_request_alignment() · 4841211e
      Eric Blake 提交于
      The next patch needs access to a device's minimum permitted
      alignment, since NBD wants to advertise this to clients. Add
      an accessor function, borrowing from blk_get_max_transfer()
      for accessing a backend's block limits.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20190329042750.14704-6-eblake@redhat.com>
      4841211e
    • E
      nbd/client: Support qemu-img convert from unaligned size · 9cf63850
      Eric Blake 提交于
      If an NBD server advertises a size that is not a multiple of a sector,
      the block layer rounds up that size, even though we set info.size to
      the exact byte value sent by the server. The block layer then proceeds
      to let us read or query block status on the hole that it added past
      EOF, which the NBD server is unlikely to be happy with. Fortunately,
      qemu as a server never advertizes an unaligned size, so we generally
      don't run into this problem; but the nbdkit server makes it easy to
      test:
      
      $ printf %1000d 1 > f1
      $ ~/nbdkit/nbdkit -fv file f1 & pid=$!
      $ qemu-img convert -f raw nbd://localhost:10809 f2
      $ kill $pid
      $ qemu-img compare f1 f2
      
      Pre-patch, the server attempts a 1024-byte read, which nbdkit
      rightfully rejects as going beyond its advertised 1000 byte size; the
      conversion fails and the output files differ (not even the first
      sector is copied, because qemu-img does not follow ddrescue's habit of
      trying smaller reads to get as much information as possible in spite
      of errors). Post-patch, the client's attempts to read (and query block
      status, for new enough nbdkit) are properly truncated to the server's
      length, with sane handling of the hole the block layer forced on
      us. Although f2 ends up as a larger file (1024 bytes instead of 1000),
      qemu-img compare shows the two images to have identical contents for
      display to the guest.
      
      I didn't add iotests coverage since I didn't want to add a dependency
      on nbdkit in iotests. I also did NOT patch write, trim, or write
      zeroes - these commands continue to fail (usually with ENOSPC, but
      whatever the server chose), because we really can't write to the end
      of the file, and because 'qemu-img convert' is the most common case
      where we care about being tolerant (which is read-only). Perhaps we
      could truncate the request if the client is writing zeros to the tail,
      but that seems like more work, especially if the block layer is fixed
      in 4.1 to track byte-accurate sizing (in which case this patch would
      be reverted as unnecessary).
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20190329042750.14704-5-eblake@redhat.com>
      Tested-by: NRichard W.M. Jones <rjones@redhat.com>
      9cf63850
    • E
      nbd/client: Reject inaccessible tail of inconsistent server · 3add3ab7
      Eric Blake 提交于
      The NBD spec suggests that a server should never advertise a size
      inconsistent with its minimum block alignment, as that tail is
      effectively inaccessible to a compliant client obeying those block
      constraints. Since we have a habit of rounding up rather than
      truncating, to avoid losing the last few bytes of user input, and we
      cannot access the tail when the server advertises bogus block sizing,
      abort the connection to alert the server to fix their bug.  And
      rejecting such servers matches what we already did for a min_block
      that was not a power of 2 or which was larger than max_block.
      
      Does not impact either qemu (which always sends properly aligned
      sizes) or nbdkit (which does not send minimum block requirements yet);
      so this is mostly aimed at new NBD server implementations, and ensures
      that the rest of our code can assume the size is aligned.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20190330155704.24191-1-eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      3add3ab7
    • P
      hw/usb/bus.c: Handle "no speed matched" case in usb_mask_to_str() · 5189e30b
      Peter Maydell 提交于
      In usb_mask_to_str() we convert a mask of USB speeds into
      a human-readable string (like "full+high") for use in
      tracing and error messages. However the conversion code
      doesn't do anything to the string buffer if the passed in
      speedmask doesn't match any of the recognized speeds,
      which means that the tracing and error messages will
      end up with random garbage in them. This can happen if
      we're doing USB device passthrough.
      
      Handle the "unrecognized speed" case by using the
      string "unknown".
      
      Fixes: https://bugs.launchpad.net/qemu/+bug/1603785Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Message-id: 20190328133503.6490-1-peter.maydell@linaro.org
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      5189e30b
    • G
      Revert "audio: fix pc speaker init" · 28605a22
      Gerd Hoffmann 提交于
      This reverts commit bd56d378.
      
      Turned out it isn't that simple as the device needs the pit object link.
      So "-device isa-pcspk" isn't going wo work anyway.  We are in freeze, so
      just reverting the thing is the best way to handle this for now, trying
      to come up with something better can be done in the 4.1 devel cycle.
      
      Also add a comment noting the object link.
      Reported-by: NDr. David Alan Gilbert <dgilbert@redhat.com>
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Message-id: 20190328071121.21147-1-kraxel@redhat.com
      28605a22
  3. 31 3月, 2019 3 次提交
    • E
      nbd/client: Report offsets in bdrv_block_status · a62a85ef
      Eric Blake 提交于
      It is desirable for 'qemu-img map' to have the same output for a file
      whether it is served over file or nbd protocols. However, ever since
      we implemented block status for NBD (2.12), the NBD protocol forgot to
      inform the block layer that as the final layer in the chain, the
      offset is valid; without an offset, the human-readable form of
      qemu-img map gives up with the unhelpful:
      
      $ nbdkit -U - data data="1" size=512 --run 'qemu-img map $nbd'
      Offset          Length          Mapped to       File
      qemu-img: File contains external, encrypted or compressed clusters.
      
      The --output=json form always works, because it is reporting the
      lower-level bdrv_block_status results directly rather than trying to
      filter out sparse ranges for human consumption - but now it also
      shows the offset member.
      
      With this patch, the human output changes to:
      
      Offset          Length          Mapped to       File
      0               0x200           0               nbd+unix://?socket=/tmp/nbdkitOxeoLa/socket
      
      This change is observable to several iotests.
      
      Fixes: 78a33ab5Reported-by: NRichard W.M. Jones <rjones@redhat.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20190329042750.14704-4-eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      a62a85ef
    • E
      nbd/client: Lower min_block for block-status, unaligned size · 7da537f7
      Eric Blake 提交于
      We have a latent bug in our NBD client code, tickled by the brand new
      nbdkit 1.11.10 block status support:
      
      $ nbdkit --filter=log --filter=truncate -U - \
                 data data="1" size=511 truncate=64K logfile=/dev/stdout \
                 --run 'qemu-img convert $nbd /var/tmp/out'
      ...
      qemu-img: block/io.c:2122: bdrv_co_block_status: Assertion `*pnum && QEMU_IS_ALIGNED(*pnum, align) && align > offset - aligned_offset' failed.
      
      The culprit? Our implementation of .bdrv_co_block_status can return
      unaligned block status for any server that operates with a lower
      actual alignment than what we tell the block layer in
      request_alignment, in violation of the block layer's constraints. To
      date, we've been unable to trip the bug, because qemu as NBD server
      always advertises block sizing (at which point it is a server bug if
      the server sends unaligned status - although qemu 3.1 is such a server
      and I've sent separate patches for 4.0 both to get the server to obey
      the spec, and to let the client to tolerate server oddities at EOF).
      
      But nbdkit does not (yet) advertise block sizing, and therefore is not
      in violation of the spec for returning block status at whatever
      boundaries it wants, and those unaligned results can occur anywhere
      rather than just at EOF. While we are still wise to avoid sending
      sub-sector read/write requests to a server of unknown origin, we MUST
      consider that a server telling us block status without an advertised
      block size is correct.  So, we either have to munge unaligned answers
      from the server into aligned ones that we hand back to the block
      layer, or we have to tell the block layer about a smaller alignment.
      
      Similarly, if the server advertises an image size that is not
      sector-aligned, we might as well assume that the server intends to let
      us access those tail bytes, and therefore supports a minimum block
      size of 1, regardless of whether the server supports block status
      (although we still need more patches to fix the problem that with an
      unaligned image, we can send read or block status requests that exceed
      EOF to the server). Again, qemu as server cannot trip this problem
      (because it rounds images to sector alignment), but nbdkit advertised
      unaligned size even before it gained block status support.
      
      Solve both alignment problems at once by using better heuristics on
      what alignment to report to the block layer when the server did not
      give us something to work with. Note that very few NBD servers
      implement block status (to date, only qemu and nbdkit are known to do
      so); and as the NBD spec mentioned block sizing constraints prior to
      documenting block status, it can be assumed that any future
      implementations of block status are aware that they must advertise
      block size if they want a minimum size other than 1.
      
      We've had a long history of struggles with picking the right alignment
      to use in the block layer, as evidenced by the commit message of
      fd8d372d (v2.12) that introduced the current choice of forced 512-byte
      alignment.
      
      There is no iotest coverage for this fix, because qemu can't provoke
      it, and I didn't want to make test 241 dependent on nbdkit.
      
      Fixes: fd8d372dReported-by: NRichard W.M. Jones <rjones@redhat.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20190329042750.14704-3-eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Tested-by: NRichard W.M. Jones <rjones@redhat.com>
      7da537f7
    • E
      iotests: Add 241 to test NBD on unaligned images · e9dce9cb
      Eric Blake 提交于
      Add a test for the NBD client workaround in the previous patch.  It's
      not really feasible for an iotest to assume a specific tracing engine,
      so we can't really probe trace_nbd_parse_blockstatus_compliance to see
      if the server was fixed vs. whether the client just worked around the
      server (other than by rearranging order between code patches and this
      test). But having a successful exchange sure beats the previous state
      of an error message. Since format probing can change alignment, we can
      use that as an easy way to test several configurations.
      
      Not tested yet, but worth adding to this test in future patches: an
      NBD server that can advertise a non-sector-aligned size (such as
      nbdkit) causes qemu as the NBD client to misbehave when it rounds the
      size up and accesses beyond the advertised size. Qemu as NBD server
      never advertises a non-sector-aligned size (since bdrv_getlength()
      currently rounds up to sector boundaries); until qemu can act as such
      a server, testing that flaw will have to rely on external binaries.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20190329042750.14704-2-eblake@redhat.com>
      Tested-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      [eblake: add forced-512 alignment, and nbdkit reproducer comment]
      e9dce9cb
  4. 30 3月, 2019 7 次提交
    • E
      nbd-client: Work around server BLOCK_STATUS misalignment at EOF · 737d3f52
      Eric Blake 提交于
      The NBD spec is clear that a server that advertises a minimum block
      size should reply to NBD_CMD_BLOCK_STATUS with extents aligned
      accordingly. However, we know that the qemu NBD server implementation
      has had a corner-case bug where it is not compliant with the spec,
      present since the introduction of NBD_CMD_BLOCK_STATUS in qemu 2.12
      (and unlikely to be patched in time for 4.0). Namely, when qemu is
      serving a file that is not a multiple of 512 bytes, it rounds the size
      advertised over NBD up to the next sector boundary (someday, I'd like
      to fix that to be byte-accurate, but it's a much bigger audit not
      appropriate for this release); yet if the final sector contains data
      prior to EOF, lseek(SEEK_HOLE) will point to the implicit hole
      mid-sector which qemu then reported over NBD.
      
      We are well within our rights to hang up on a server that can't follow
      the spec, but it is more useful to try and keep the connection alive
      in spite of the problem. Do so by tracing a message about the problem,
      and then either truncating the request back to an aligned boundary (if
      it covered more than the final sector) or widening it out to the full
      boundary with a forced status of data (since truncating would result
      in 0 bytes, but we have to make progress, and valid since data is a
      default-safe answer). And in practice, since the problem only happens
      on a sector that starts with data and ends with a hole, we are going
      to want to read that full sector anyway (where qemu as the server
      fills in the tail beyond EOF with appropriate NUL bytes).
      
      Easy reproduction:
      $ printf %1000d 1 > file
      $ qemu-nbd -f raw -t file & pid=$!
      $ qemu-img map --output=json -f raw nbd://localhost:10809
      qemu-img: Could not read file metadata: Invalid argument
      $ kill $pid
      
      where the patched version instead succeeds with:
      [{ "start": 0, "length": 1024, "depth": 0, "zero": false, "data": true}]
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20190326171317.4036-1-eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      737d3f52
    • E
      qemu-img: Gracefully shutdown when map can't finish · 30065d14
      Eric Blake 提交于
      Trying 'qemu-img map -f raw nbd://localhost:10809' causes the
      NBD server to output a scary message:
      
      qemu-nbd: Disconnect client, due to: Failed to read request: Unexpected end-of-file before all bytes were read
      
      This is because the NBD client, being remote, has no way to expose a
      human-readable map (the --output=json data is fine, however). But
      because we exit(1) right after the message, causing the client to
      bypass all block cleanup, the server sees the abrupt exit and warns,
      whereas it would be silent had the client had a chance to send
      NBD_CMD_DISC. Other protocols may have similar cleanup issues, where
      failure to blk_unref() could cause unintended effects.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20190326184043.7544-1-eblake@redhat.com>
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      Reviewed-by: NKevin Wolf <kwolf@redhat.com>
      30065d14
    • E
      nbd: Permit simple error to NBD_CMD_BLOCK_STATUS · ebd82cd8
      Eric Blake 提交于
      The NBD spec is clear that when structured replies are active, a
      simple error reply is acceptable to any command except for
      NBD_CMD_READ.  However, we were mistakenly requiring structured errors
      for NBD_CMD_BLOCK_STATUS, and hanging up on a server that gave a
      simple error (since qemu does not behave as such a server, we didn't
      notice the problem until now).  Broken since its introduction in
      commit 78a33ab5 (v2.12).
      
      Noticed while debugging a separate failure reported by nbdkit while
      working out its initial implementation of BLOCK_STATUS, although it
      turns out that nbdkit also chose to send structured error replies for
      BLOCK_STATUS, so I had to manually provoke the situation by hacking
      qemu's server to send a simple error reply:
      
      | diff --git i/nbd/server.c w/nbd/server.c
      | index fd013a2817a..833288d7c45 100644
      | 00--- i/nbd/server.c
      | +++ w/nbd/server.c
      | @@ -2269,6 +2269,8 @@ static coroutine_fn int nbd_handle_request(NBDClient *client,
      |                                        "discard failed", errp);
      |
      |      case NBD_CMD_BLOCK_STATUS:
      | +        return nbd_co_send_simple_reply(client, request->handle, ENOMEM,
      | +                                        NULL, 0, errp);
      |          if (!request->len) {
      |              return nbd_send_generic_reply(client, request->handle, -EINVAL,
      |                                            "need non-zero length", errp);
      |
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Acked-by: NRichard W.M. Jones <rjones@redhat.com>
      Message-Id: <20190325190104.30213-3-eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      ebd82cd8
    • E
      nbd: Don't lose server's error to NBD_CMD_BLOCK_STATUS · b29f3a3d
      Eric Blake 提交于
      When the server replies with a (structured [*]) error to
      NBD_CMD_BLOCK_STATUS, without any extent information sent first, the
      client code was blindly throwing away the server's error code and
      instead telling the caller that EIO occurred.  This has been broken
      since its introduction in 78a33ab5 (v2.12, where we should have called:
         error_setg(&local_err, "Server did not reply with any status extents");
         nbd_iter_error(&iter, false, -EIO, &local_err);
      to declare the situation as a non-fatal error if no earlier error had
      already been flagged, rather than just blindly slamming iter.err and
      iter.ret), although it is more noticeable since commit 7f86068d, which
      actually tries hard to preserve the server's code thanks to a separate
      iter.request_ret.
      
      [*] The spec is clear that the server is also permitted to reply with
      a simple error, but that's a separate fix.
      
      I was able to provoke this scenario with a hack to the server, then
      seeing whether ENOMEM makes it back to the caller:
      
      | diff --git a/nbd/server.c b/nbd/server.c
      | index fd013a2817a..29c7995de02 100644
      | --- a/nbd/server.c
      | +++ b/nbd/server.c
      | @@ -2269,6 +2269,8 @@ static coroutine_fn int nbd_handle_request(NBDClient *client,
      |                                        "discard failed", errp);
      |
      |      case NBD_CMD_BLOCK_STATUS:
      | +        return nbd_send_generic_reply(client, request->handle, -ENOMEM,
      | +                                      "no status for you today", errp);
      |          if (!request->len) {
      |              return nbd_send_generic_reply(client, request->handle, -EINVAL,
      |                                            "need non-zero length", errp);
      | --
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20190325190104.30213-2-eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      b29f3a3d
    • E
      nbd: Tolerate some server non-compliance in NBD_CMD_BLOCK_STATUS · a39286dd
      Eric Blake 提交于
      The NBD spec states that NBD_CMD_FLAG_REQ_ONE (which we currently
      always use) should not reply with an extent larger than our request,
      and that the server's response should be exactly one extent. Right
      now, that means that if a server sends more than one extent, we treat
      the server as broken, fail the block status request, and disconnect,
      which prevents all further use of the block device. But while good
      software should be strict in what it sends, it should be tolerant in
      what it receives.
      
      While trying to implement NBD_CMD_BLOCK_STATUS in nbdkit, we
      temporarily had a non-compliant server sending too many extents in
      spite of REQ_ONE. Oddly enough, 'qemu-img convert' with qemu 3.1
      failed with a somewhat useful message:
        qemu-img: Protocol error: invalid payload for NBD_REPLY_TYPE_BLOCK_STATUS
      
      which then disappeared with commit d8b4bad8, on the grounds that an
      error message flagged only at the time of coroutine teardown is
      pointless, and instead we should rely on the actual failed API to
      report an error - in other words, the 3.1 behavior was masking the
      fact that qemu-img was not reporting an error. That has since been
      fixed in the previous patch, where qemu-img convert now fails with:
        qemu-img: error while reading block status of sector 0: Invalid argument
      
      But even that is harsh.  Since we already partially relaxed things in
      commit acfd8f7a to tolerate a server that exceeds the cap (although
      that change was made prior to the NBD spec actually putting a cap on
      the extent length during REQ_ONE - in fact, the NBD spec change was
      BECAUSE of the qemu behavior prior to that commit), it's not that much
      harder to argue that we should also tolerate a server that sends too
      many extents.  But at the same time, it's nice to trace when we are
      being tolerant of server non-compliance, in order to help server
      writers fix their implementations to be more portable (if they refer
      to our traces, rather than just stderr).
      Reported-by: NRichard W.M. Jones <rjones@redhat.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20190323212639.579-3-eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      a39286dd
    • E
      qemu-img: Report bdrv_block_status failures · 2058c2ad
      Eric Blake 提交于
      If bdrv_block_status_above() fails, we are aborting the convert
      process but failing to print an error message.  Broken in commit
      690c7301 (v2.4) when rewriting convert's logic.
      
      Discovered when teaching nbdkit to support NBD_CMD_BLOCK_STATUS, and
      accidentally violating the protocol by returning more than one extent
      in spite of qemu asking for NBD_CMD_FLAG_REQ_ONE.  The qemu NBD code
      should probably handle the server's non-compliance more gracefully
      than failing with EINVAL, but qemu-img shouldn't be silently
      squelching any block status failures. It doesn't help that qemu 3.1
      masks the qemu-img bug with extra noise that the nbd code is dumping
      to stderr (that noise was cleaned up in d8b4bad8).
      Reported-by: NRichard W.M. Jones <rjones@redhat.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20190323212639.579-2-eblake@redhat.com>
      Reviewed-by: NKevin Wolf <kwolf@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      2058c2ad
    • P
      Merge remote-tracking branch 'remotes/rth/tags/pull-axp-20190325' into staging · 230ce198
      Peter Maydell 提交于
      Update palcode for machine checks.
      
      # gpg: Signature made Mon 25 Mar 2019 23:09:24 GMT
      # gpg:                using RSA key 7A481E78868B4DB6A85A05C064DF38E8AF7E215F
      # gpg:                issuer "richard.henderson@linaro.org"
      # gpg: Good signature from "Richard Henderson <richard.henderson@linaro.org>" [full]
      # Primary key fingerprint: 7A48 1E78 868B 4DB6 A85A  05C0 64DF 38E8 AF7E 215F
      
      * remotes/rth/tags/pull-axp-20190325:
        pc-bios: Update palcode-clipper
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      230ce198
  5. 29 3月, 2019 1 次提交
    • P
      Merge remote-tracking branch 'remotes/jasowang/tags/net-pull-request' into staging · c503849b
      Peter Maydell 提交于
      # gpg: Signature made Fri 29 Mar 2019 07:30:26 GMT
      # gpg:                using RSA key EF04965B398D6211
      # gpg: Good signature from "Jason Wang (Jason Wang on RedHat) <jasowang@redhat.com>" [marginal]
      # gpg: WARNING: This key is not certified with sufficiently trusted signatures!
      # gpg:          It is not certain that the signature belongs to the owner.
      # Primary key fingerprint: 215D 46F4 8246 689E C77F  3562 EF04 965B 398D 6211
      
      * remotes/jasowang/tags/net-pull-request:
        net: tap: use qemu_set_nonblock
        MAINTAINERS: Update the latest email address
        e1000: Delay flush queue when receive RCTL
        net/socket: learn to talk with a unix dgram socket
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      c503849b