qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [qemu/qemu] 654591: nbd/server: fix bitmap export


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] 654591: nbd/server: fix bitmap export
Date: Mon, 01 Oct 2018 03:30:04 -0700

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: 6545916d528de7a6b784f4d10e7b236b30bfaced
      
https://github.com/qemu/qemu/commit/6545916d528de7a6b784f4d10e7b236b30bfaced
  Author: Vladimir Sementsov-Ogievskiy <address@hidden>
  Date:   2018-09-26 (Wed, 26 Sep 2018)

  Changed paths:
    M nbd/server.c

  Log Message:
  -----------
  nbd/server: fix bitmap export

bitmap_to_extents function is broken: it switches dirty variable after
every iteration, however it can process only part of dirty (or zero)
area during one iteration in case when this area is too large for one
extent.

Fortunately, the bug doesn't produce wrong extent flags: it just inserts
a zero-length extent between sequential extents representing large dirty
(or zero) area. However, zero-length extents are forbidden by the NBD
protocol. So, a careful client should consider such a reply as a server
fault, while a less-careful will likely ignore zero-length extents.

The bug can only be triggered by a client that requests block status
for nearly 4G at once (a request of 4G and larger is impossible per
the protocol, and requests smaller than 4G less the bitmap granularity
cause the loop to quit iterating rather than revisit the tail of the
large area); it also cannot trigger if the client used the
NBD_CMD_FLAG_REQ_ONE flag.  Since qemu 3.0 as client (using the
x-dirty-bitmap extension) always passes the flag, it is immune; and
we are not aware of other open-source clients that know how to request
qemu:dirty-bitmap:FOO contexts.  Clients that want to avoid the bug
could cap block status requests to a smaller length, such as 2G or 3G.

Fix this by more careful handling of dirty variable.

Bug was introduced in 3d068aff16
 "nbd/server: implement dirty bitmap export", with the whole function.
and is present in v3.0.0 release.

Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Message-Id: <address@hidden>
CC: address@hidden
Reviewed-by: Eric Blake <address@hidden>
[eblake: improved commit message]
Signed-off-by: Eric Blake <address@hidden>


  Commit: cb9f871e80fe630422e0962751a6f9fb1795fe02
      
https://github.com/qemu/qemu/commit/cb9f871e80fe630422e0962751a6f9fb1795fe02
  Author: John Snow <address@hidden>
  Date:   2018-09-26 (Wed, 26 Sep 2018)

  Changed paths:
    M qapi/block-core.json

  Log Message:
  -----------
  qapi: bitmap-merge: document name change

We named these using underscores instead of the preferred dash,
document this nearby so we cannot possibly forget to rectify this
when we remove the 'x-' prefixes when the feature becomes stable.

We do not implement the change ahead of time to avoid more work
for libvirt to do in order to figure out how to use the beta version
of the API needlessly.

Reported-by: Eric Blake <address@hidden>
Signed-off-by: John Snow <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
[eblake: typo fix]
Signed-off-by: Eric Blake <address@hidden>


  Commit: fb7afc797e071f2616e1ccc849b39fe43e7033bf
      
https://github.com/qemu/qemu/commit/fb7afc797e071f2616e1ccc849b39fe43e7033bf
  Author: Vladimir Sementsov-Ogievskiy <address@hidden>
  Date:   2018-09-26 (Wed, 26 Sep 2018)

  Changed paths:
    M nbd/server.c

  Log Message:
  -----------
  nbd/server: send more than one extent of base:allocation context

This is necessary for efficient block-status export, for clients which
support it.  (qemu is not yet such a client, but could become one.)

Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Message-Id: <address@hidden>
[eblake: grammar tweaks]
Signed-off-by: Eric Blake <address@hidden>


  Commit: e7f5f0b6e6f2fb592ab66145b8bc35a0e4a4e198
      
https://github.com/qemu/qemu/commit/e7f5f0b6e6f2fb592ab66145b8bc35a0e4a4e198
  Author: Peter Maydell <address@hidden>
  Date:   2018-10-01 (Mon, 01 Oct 2018)

  Changed paths:
    M nbd/server.c
    M qapi/block-core.json

  Log Message:
  -----------
  Merge remote-tracking branch 'remotes/ericb/tags/pull-nbd-2018-09-26' into 
staging

nbd patches for 2018-09-26

Fixes for external clients; add reminder to revisit naming of x- command

- Vladimir Sementsov-Ogievskiy: nbd/server: send more than one extent of 
base:allocation context
- John Snow: qapi: bitmap-merge: document name change
- Vladimir Sementsov-Ogievskiy: nbd/server: fix bitmap export

# gpg: Signature made Thu 27 Sep 2018 03:40:03 BST
# gpg:                using RSA key A7A16B4A2527436A
# gpg: Good signature from "Eric Blake <address@hidden>"
# gpg:                 aka "Eric Blake (Free Software Programmer) 
<address@hidden>"
# gpg:                 aka "[jpeg image of size 6874]"
# Primary key fingerprint: 71C2 CC22 B1C4 6029 27D2  F3AA A7A1 6B4A 2527 436A

* remotes/ericb/tags/pull-nbd-2018-09-26:
  nbd/server: send more than one extent of base:allocation context
  qapi: bitmap-merge: document name change
  nbd/server: fix bitmap export

Signed-off-by: Peter Maydell <address@hidden>


Compare: https://github.com/qemu/qemu/compare/07f426c35edd...e7f5f0b6e6f2
      **NOTE:** This service has been marked for deprecation: 
https://developer.github.com/changes/2018-04-25-github-services-deprecation/

      Functionality will be removed from GitHub.com on January 31st, 2019.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]