Skip to content
Snippets Groups Projects
  1. May 13, 2022
  2. May 12, 2022
    • Eric Blake's avatar
      nbd/server: Allow MULTI_CONN for shared writable exports · 58a6fdcc
      Eric Blake authored
      
      According to the NBD spec, a server that advertises
      NBD_FLAG_CAN_MULTI_CONN promises that multiple client connections will
      not see any cache inconsistencies: when properly separated by a single
      flush, actions performed by one client will be visible to another
      client, regardless of which client did the flush.
      
      We always satisfy these conditions in qemu - even when we support
      multiple clients, ALL clients go through a single point of reference
      into the block layer, with no local caching.  The effect of one client
      is instantly visible to the next client.  Even if our backend were a
      network device, we argue that any multi-path caching effects that
      would cause inconsistencies in back-to-back actions not seeing the
      effect of previous actions would be a bug in that backend, and not the
      fault of caching in qemu.  As such, it is safe to unconditionally
      advertise CAN_MULTI_CONN for any qemu NBD server situation that
      supports parallel clients.
      
      Note, however, that we don't want to advertise CAN_MULTI_CONN when we
      know that a second client cannot connect (for historical reasons,
      qemu-nbd defaults to a single connection while nbd-server-add and QMP
      commands default to unlimited connections; but we already have
      existing means to let either style of NBD server creation alter those
      defaults).  This is visible by no longer advertising MULTI_CONN for
      'qemu-nbd -r' without -e, as in the iotest nbd-qemu-allocation.
      
      The harder part of this patch is setting up an iotest to demonstrate
      behavior of multiple NBD clients to a single server.  It might be
      possible with parallel qemu-io processes, but I found it easier to do
      in python with the help of libnbd, and help from Nir and Vladimir in
      writing the test.
      
      Signed-off-by: default avatarEric Blake <eblake@redhat.com>
      Suggested-by: default avatarNir Soffer <nsoffer@redhat.com>
      Suggested-by: default avatarVladimir Sementsov-Ogievskiy <v.sementsov-og@mail.ru>
      Message-Id: <20220512004924.417153-3-eblake@redhat.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      58a6fdcc
  3. May 09, 2022
  4. May 08, 2022
  5. May 04, 2022
  6. Apr 21, 2022
  7. Apr 20, 2022
  8. Apr 01, 2022
  9. Mar 21, 2022
  10. Mar 15, 2022
  11. Mar 08, 2022
  12. Mar 07, 2022
    • Thomas Huth's avatar
      MAINTAINERS: Update the files in the FreeBSD section · 5be6fd0c
      Thomas Huth authored
      
      The FreeBSD CI definitions now reside in other files than .cirrs.yml.
      Update the entry in MAINTAINERS accordingly.
      
      Message-Id: <20220217141138.917292-1-thuth@redhat.com>
      Signed-off-by: default avatarThomas Huth <thuth@redhat.com>
      5be6fd0c
    • Vladimir Sementsov-Ogievskiy's avatar
      block: introduce snapshot-access block driver · 1c14eaab
      Vladimir Sementsov-Ogievskiy authored
      
      The new block driver simply utilizes snapshot-access API of underlying
      block node.
      
      In further patches we want to use it like this:
      
      [guest]                   [NBD export]
         |                            |
         | root                       | root
         v                 file       v
      [copy-before-write]<------[snapshot-access]
         |           |
         | file      | target
         v           v
      [active-disk] [temp.img]
      
      This way, NBD client will be able to read snapshotted state of active
      disk, when active disk is continued to be written by guest. This is
      known as "fleecing", and currently uses another scheme based on qcow2
      temporary image which backing file is active-disk. New scheme comes
      with benefits - see next commit.
      
      The other possible application is exporting internal snapshots of
      qcow2, like this:
      
      [guest]          [NBD export]
         |                  |
         | root             | root
         v       file       v
      [qcow2]<---------[snapshot-access]
      
      For this, we'll need to implement snapshot-access API handlers in
      qcow2 driver, and improve snapshot-access block driver (and API) to
      make it possible to select snapshot by name. Another thing to improve
      is size of snapshot. Now for simplicity we just use size of bs->file,
      which is OK for backup, but for qcow2 snapshots export we'll need to
      imporve snapshot-access API to get size of snapshot.
      
      Signed-off-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20220303194349.2304213-12-vsementsov@virtuozzo.com>
      [hreitz: Rebased on block GS/IO split]
      Signed-off-by: default avatarHanna Reitz <hreitz@redhat.com>
      1c14eaab
    • Vladimir Sementsov-Ogievskiy's avatar
      block: intoduce reqlist · d088e6a4
      Vladimir Sementsov-Ogievskiy authored
      
      Split intersecting-requests functionality out of block-copy to be
      reused in copy-before-write filter.
      
      Note: while being here, fix tiny typo in MAINTAINERS.
      
      Signed-off-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Reviewed-by: default avatarHanna Reitz <hreitz@redhat.com>
      Message-Id: <20220303194349.2304213-7-vsementsov@virtuozzo.com>
      Signed-off-by: default avatarHanna Reitz <hreitz@redhat.com>
      d088e6a4
  13. Mar 04, 2022
  14. Feb 28, 2022
  15. Feb 23, 2022
  16. Feb 21, 2022
  17. Feb 20, 2022
  18. Feb 16, 2022
  19. Feb 09, 2022
  20. Jan 31, 2022
  21. Jan 28, 2022
  22. Jan 20, 2022
  23. Jan 18, 2022
  24. Jan 12, 2022
  25. Jan 10, 2022
  26. Jan 08, 2022
Loading