1. 03 12月, 2018 1 次提交
  2. 27 11月, 2018 1 次提交
  3. 23 11月, 2018 3 次提交
    • A
      block: Update BlockDriverState.inherits_from on bdrv_drop_intermediate() · 6bd858b3
      Alberto Garcia 提交于
      The previous patch fixed the inherits_from pointer after block-stream,
      and this one does the same for block-commit.
      
      When block-commit finishes and the 'top' node is not the topmost one
      from the backing chain then all nodes above 'base' up to and including
      'top' are removed from the chain.
      
      The bdrv_drop_intermediate() call converts a chain like this one:
      
          base <- intermediate <- top <- active
      
      into this one:
      
          base <- active
      
      In a simple scenario each backing file from the first chain has the
      inherits_from attribute pointing to its parent. This means that
      reopening 'active' will recursively reopen all its children, whose
      options can be changed in the process.
      
      However after the 'block-commit' call base.inherits_from is NULL and
      the chain is broken, so 'base' does not inherit from 'active' and will
      not be reopened automatically:
      
         $ qemu-img create -f qcow2 hd0.qcow2 1M
         $ qemu-img create -f qcow2 -b hd0.qcow2 hd1.qcow2
         $ qemu-img create -f qcow2 -b hd1.qcow2 hd2.qcow2
         $ $QEMU -drive if=none,file=hd2.qcow2
      
         { 'execute': 'block-commit',
           'arguments': {
             'device': 'none0',
             'top': 'hd1.qcow2' } }
      
         { 'execute': 'human-monitor-command',
           'arguments': {
              'command-line':
                'qemu-io none0 "reopen -o backing.l2-cache-size=2M"' } }
      
         { "return": "Cannot change the option 'backing.l2-cache-size'\r\n"}
      
      This patch updates base.inherits_from in this scenario, and adds a
      test case.
      Signed-off-by: NAlberto Garcia <berto@igalia.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      6bd858b3
    • A
      block: Update BlockDriverState.inherits_from on bdrv_set_backing_hd() · 0065c455
      Alberto Garcia 提交于
      When a BlockDriverState's child is opened (be it a backing file, the
      protocol layer, or any other) inherits_from is set to point to the
      parent node. Children opened separately and then attached to a parent
      don't have this pointer set.
      
      bdrv_reopen_queue_child() uses this to determine whether a node's
      children must also be reopened inheriting the options from the parent
      or not. If inherits_from points to the parent then the child is
      reopened and its options can be changed, like in this example:
      
         $ qemu-img create -f qcow2 hd0.qcow2 1M
         $ qemu-img create -f qcow2 hd1.qcow2 1M
         $ $QEMU -drive if=none,node-name=hd0,file=hd0.qcow2,\
                        backing.driver=qcow2,backing.file.filename=hd1.qcow2
         (qemu) qemu-io hd0 "reopen -o backing.l2-cache-size=2M"
      
      If the child does not inherit from the parent then it does not get
      reopened and its options cannot be changed:
      
         $ $QEMU -drive if=none,node-name=hd1,file=hd1.qcow2
                 -drive if=none,node-name=hd0,file=hd0.qcow2,backing=hd1
         (qemu) qemu-io hd0 "reopen -o backing.l2-cache-size=2M"
         Cannot change the option 'backing.l2-cache-size'
      
      If a disk image has a chain of backing files then all of them are also
      connected through their inherits_from pointers (i.e. it's possible to
      walk the chain in reverse order from base to top).
      
      However this is broken if the intermediate nodes are removed using
      e.g. block-stream because the inherits_from pointer from the base node
      becomes NULL:
      
         $ qemu-img create -f qcow2 hd0.qcow2 1M
         $ qemu-img create -f qcow2 -b hd0.qcow2 hd1.qcow2
         $ qemu-img create -f qcow2 -b hd1.qcow2 hd2.qcow2
         $ $QEMU -drive if=none,file=hd2.qcow2
         (qemu) qemu-io none0 "reopen -o backing.l2-cache-size=2M"
         (qemu) block_stream none0 0 hd0.qcow2
         (qemu) qemu-io none0 "reopen -o backing.l2-cache-size=2M"
         Cannot change the option 'backing.l2-cache-size'
      
      This patch updates the inherits_from pointer if the intermediate nodes
      of a backing chain are removed using bdrv_set_backing_hd(), and adds a
      test case for this scenario.
      Signed-off-by: NAlberto Garcia <berto@igalia.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      0065c455
    • E
      iotests: Enhance 223 to cover multiple bitmap granularities · a237dea3
      Eric Blake 提交于
      Testing granularity at the same size as the cluster isn't quite
      as fun as what happens when it is larger or smaller.  This
      enhancement also shows that qemu's nbd server can serve the
      same disk over multiple exports simultaneously.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Tested-by: NJohn Snow <jsnow@redhat.com>
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      a237dea3
  4. 22 11月, 2018 1 次提交
  5. 21 11月, 2018 3 次提交
  6. 20 11月, 2018 9 次提交
  7. 19 11月, 2018 2 次提交
  8. 05 11月, 2018 5 次提交
    • M
      option: Make option help nicer to read · 63898712
      Max Reitz 提交于
      This adds some whitespace into the option help (including indentation)
      and puts angle brackets around the type names.  Furthermore, the list
      name is no longer printed as part of every line, but only once in
      advance, and only if the caller did not print a caption already.
      
      This patch also restores the description alignment we had before commit
      9cbef9d6, just at 24 instead of 16 characters like we used to.
      This increase is because now we have the type and two spaces of
      indentation before the description, and with a usual type name length of
      three chracters, this sums up to eight additional characters -- which
      means that we now need 24 characters to get the same amount of padding
      for most options.  Also, 24 is a third of 80, which makes it kind of a
      round number in terminal terms.
      
      Finally, this patch amends the reference output of iotest 082 to match
      the changes (and thus makes it pass again).
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      Reviewed-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      63898712
    • K
      36f808fa
    • A
      iotest: Test x-blockdev-change on a Quorum · 04f600ef
      Alberto Garcia 提交于
      This patch tests that you can add and remove drives from a Quorum
      using the x-blockdev-change command.
      Signed-off-by: NAlberto Garcia <berto@igalia.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      04f600ef
    • A
      82c4c859
    • C
      iotests: make 083 specific to raw · d98205c5
      Cleber Rosa 提交于
      While testing the Python 3 changes which touch the 083 test, I noticed
      that it would fail with qcow2.  Expanding the testing, I noticed it
      had nothing to do with the Python 3 changes, and in fact, it would not
      pass on anything but raw:
      
       raw: pass
       bochs: not generic
       cloop: not generic
       parallels: fail
       qcow: fail
       qcow2: fail
       qed: fail
       vdi: fail
       vhdx: fail
       vmdk: fail
       vpc: fail
       luks: fail
      
      The errors are a mixture I/O and "image not in xxx format", such as:
      
        === Check disconnect before data ===
      
        Unexpected end-of-file before all bytes were read
       -read failed: Input/output error
       +can't open device nbd+tcp://127.0.0.1:PORT/foo: Could not open 'nbd://127.0.0.1:PORT/foo': Input/output error
      
        === Check disconnect after data ===
      
       -read 512/512 bytes at offset 0
       -512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
       +can't open device nbd+tcp://127.0.0.1:PORT/foo: Image not in qcow format
      
      I'm not aware if there's a quick fix, so, for the time being, it looks
      like the honest approach is to make the test known to work on raw
      only.
      Signed-off-by: NCleber Rosa <crosa@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      d98205c5
  9. 31 10月, 2018 9 次提交
  10. 30 10月, 2018 3 次提交
  11. 26 10月, 2018 3 次提交