Skip to content
Snippets Groups Projects
  1. Jun 29, 2021
  2. Jun 25, 2021
  3. Jun 02, 2021
    • Vladimir Sementsov-Ogievskiy's avatar
      block: improve permission conflict error message · 30ebb9aa
      Vladimir Sementsov-Ogievskiy authored
      
      Now permissions are updated as follows:
       1. do graph modifications ignoring permissions
       2. do permission update
      
       (of course, we rollback [1] if [2] fails)
      
      So, on stage [2] we can't say which users are "old" and which are
      "new" and exist only since [1]. And current error message is a bit
      outdated. Let's improve it, to make everything clean.
      
      While being here, add also a comment and some good assertions.
      
      iotests 283, 307, qsd-jobs outputs are updated.
      
      Signed-off-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20210601075218.79249-7-vsementsov@virtuozzo.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      30ebb9aa
    • Vladimir Sementsov-Ogievskiy's avatar
      block: simplify bdrv_child_user_desc() · da261b69
      Vladimir Sementsov-Ogievskiy authored
      
      All child classes have this callback. So, drop unreachable code.
      
      Still add an assertion to bdrv_attach_child_common(), to early detect
      bad classes.
      
      Signed-off-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20210601075218.79249-6-vsementsov@virtuozzo.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      da261b69
    • Vladimir Sementsov-Ogievskiy's avatar
      block: improve bdrv_child_get_parent_desc() · 2c0a3acb
      Vladimir Sementsov-Ogievskiy authored
      
      We have different types of parents: block nodes, block backends and
      jobs. So, it makes sense to specify type together with name.
      
      Next, this handler us used to compose an error message about permission
      conflict. And permission conflict occurs in a specific place of block
      graph. We shouldn't report name of parent device (as it refers another
      place in block graph), but exactly and only the name of the node. So,
      use bdrv_get_node_name() directly.
      
      iotest 283 output is updated.
      
      Signed-off-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Reviewed-by: default avatarAlberto Garcia <berto@igalia.com>
      Message-Id: <20210601075218.79249-4-vsementsov@virtuozzo.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      2c0a3acb
    • Vladimir Sementsov-Ogievskiy's avatar
      block: document child argument of bdrv_attach_child_common() · f8d2ad78
      Vladimir Sementsov-Ogievskiy authored
      
      The logic around **child is not obvious: this reference is used not
      only to return resulting child, but also to rollback NULL value on
      transaction abort.
      
      So, let's add documentation and some assertions.
      
      While being here, drop extra declaration of bdrv_attach_child_noperm().
      
      Signed-off-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20210601075218.79249-2-vsementsov@virtuozzo.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      f8d2ad78
    • Vladimir Sementsov-Ogievskiy's avatar
      block: drop BlockDriverState::read_only · 975da073
      Vladimir Sementsov-Ogievskiy authored
      
      This variable is just a cache for !(bs->open_flags & BDRV_O_RDWR),
      which we have to synchronize everywhere. Let's just drop it and
      consistently use bdrv_is_read_only().
      
      Signed-off-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20210527154056.70294-3-vsementsov@virtuozzo.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      975da073
    • Vladimir Sementsov-Ogievskiy's avatar
      block: consistently use bdrv_is_read_only() · 307261b2
      Vladimir Sementsov-Ogievskiy authored
      
      It's better to use accessor function instead of bs->read_only directly.
      In some places use bdrv_is_writable() instead of
      checking both BDRV_O_RDWR set and BDRV_O_INACTIVE not set.
      
      In bdrv_open_common() it's a bit strange to add one more variable, but
      we are going to drop bs->read_only in the next patch, so new ro local
      variable substitutes it here.
      
      Signed-off-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20210527154056.70294-2-vsementsov@virtuozzo.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      307261b2
    • Vladimir Sementsov-Ogievskiy's avatar
      block/vvfat: child_vvfat_qcow: add .get_parent_aio_context, fix crash · fb62b588
      Vladimir Sementsov-Ogievskiy authored
      
      Commit 3ca1f322
      "block: BdrvChildClass: add .get_parent_aio_context handler" introduced
      new handler and commit 228ca37e
      "block: drop ctx argument from bdrv_root_attach_child" made a generic
      use of it. But 3ca1f322 didn't update
      child_vvfat_qcow. Fix that.
      
      Before that fix the command
      
      ./build/qemu-system-x86_64 -usb -device usb-storage,drive=fat16 \
        -drive file=fat:rw:fat-type=16:"<path of a host folder>",id=fat16,format=raw,if=none
      
      crashes:
      
      1  bdrv_child_get_parent_aio_context (c=0x559d62426d20)
          at ../block.c:1440
      2  bdrv_attach_child_common
          (child_bs=0x559d62468190, child_name=0x559d606f9e3d "write-target",
           child_class=0x559d60c58d20 <child_vvfat_qcow>, child_role=3,
           perm=3, shared_perm=4, opaque=0x559d62445690,
           child=0x7ffc74c2acc8, tran=0x559d6246ddd0, errp=0x7ffc74c2ae60)
          at ../block.c:2795
      3  bdrv_attach_child_noperm
          (parent_bs=0x559d62445690, child_bs=0x559d62468190,
           child_name=0x559d606f9e3d "write-target",
           child_class=0x559d60c58d20 <child_vvfat_qcow>, child_role=3,
           child=0x7ffc74c2acc8, tran=0x559d6246ddd0, errp=0x7ffc74c2ae60) at
          ../block.c:2855
      4  bdrv_attach_child
          (parent_bs=0x559d62445690, child_bs=0x559d62468190,
           child_name=0x559d606f9e3d "write-target",
           child_class=0x559d60c58d20 <child_vvfat_qcow>, child_role=3,
           errp=0x7ffc74c2ae60) at ../block.c:2953
      5  bdrv_open_child
          (filename=0x559d62464b80 "/var/tmp/vl.h3TIS4",
           options=0x559d6246ec20, bdref_key=0x559d606f9e3d "write-target",
           parent=0x559d62445690, child_class=0x559d60c58d20
           <child_vvfat_qcow>, child_role=3, allow_none=false,
           errp=0x7ffc74c2ae60) at ../block.c:3351
      6  enable_write_target (bs=0x559d62445690, errp=0x7ffc74c2ae60) at
         ../block/vvfat.c:3176
      7  vvfat_open (bs=0x559d62445690, options=0x559d6244adb0, flags=155650,
                     errp=0x7ffc74c2ae60) at ../block/vvfat.c:1236
      8  bdrv_open_driver (bs=0x559d62445690, drv=0x559d60d4f7e0
                           <bdrv_vvfat>, node_name=0x0,
                           options=0x559d6244adb0, open_flags=155650,
                           errp=0x7ffc74c2af70) at ../block.c:1557
      9  bdrv_open_common (bs=0x559d62445690, file=0x0,
                           options=0x559d6244adb0, errp=0x7ffc74c2af70) at
      ...
      
      (gdb) fr 1
       #1  0x0000559d603ea3bf in bdrv_child_get_parent_aio_context
           (c=0x559d62426d20) at ../block.c:1440
      1440        return c->klass->get_parent_aio_context(c);
       (gdb) p c->klass
      $1 = (const BdrvChildClass *) 0x559d60c58d20 <child_vvfat_qcow>
       (gdb) p c->klass->get_parent_aio_context
      $2 = (AioContext *(*)(BdrvChild *)) 0x0
      
      Fixes: 3ca1f322
      Fixes: 228ca37e
      Reported-by: default avatarJohn Arbuckle <programmingkidx@gmail.com>
      Signed-off-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20210524101257.119377-2-vsementsov@virtuozzo.com>
      Tested-by: default avatarJohn Arbuckle <programmingkidx@gmail.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      fb62b588
  4. May 18, 2021
  5. May 14, 2021
  6. May 02, 2021
  7. Apr 30, 2021
Loading