Skip to content
Snippets Groups Projects
  1. Aug 30, 2023
    • Andrey Drobyshev's avatar
      block/io: align requests to subcluster_size · fc6b211f
      Andrey Drobyshev authored
      
      When target image is using subclusters, and we align the request during
      copy-on-read, it makes sense to align to subcluster_size rather than
      cluster_size.  Otherwise we end up with unnecessary allocations.
      
      This commit renames bdrv_round_to_clusters() to bdrv_round_to_subclusters()
      and utilizes subcluster_size field of BlockDriverInfo to make necessary
      alignments.  It affects copy-on-read as well as mirror job (which is
      using bdrv_round_to_clusters()).
      
      This change also fixes the following bug with failing assert (covered by
      the test in the subsequent commit):
      
      qemu-img create -f qcow2 base.qcow2 64K
      qemu-img create -f qcow2 -o extended_l2=on,backing_file=base.qcow2,backing_fmt=qcow2 img.qcow2 64K
      qemu-io -c "write -P 0xaa 0 2K" img.qcow2
      qemu-io -C -c "read -P 0x00 2K 62K" img.qcow2
      
      qemu-io: ../block/io.c:1236: bdrv_co_do_copy_on_readv: Assertion `skip_bytes < pnum' failed.
      
      Reviewed-by: default avatarEric Blake <eblake@redhat.com>
      Reviewed-by: default avatarDenis V. Lunev <den@openvz.org>
      Signed-off-by: default avatarAndrey Drobyshev <andrey.drobyshev@virtuozzo.com>
      Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Message-ID: <20230711172553.234055-3-andrey.drobyshev@virtuozzo.com>
      fc6b211f
    • Andrey Drobyshev's avatar
      block: add subcluster_size field to BlockDriverInfo · c54483b6
      Andrey Drobyshev authored
      
      This is going to be used in the subsequent commit as requests alignment
      (in particular, during copy-on-read).  This value only makes sense for
      the formats which support subclusters (currently QCOW2 only).  If this
      field isn't set by driver's own bdrv_get_info() implementation, we
      simply set it equal to the cluster size thus treating each cluster as
      having a single subcluster.
      
      Reviewed-by: default avatarEric Blake <eblake@redhat.com>
      Reviewed-by: default avatarDenis V. Lunev <den@openvz.org>
      Signed-off-by: default avatarAndrey Drobyshev <andrey.drobyshev@virtuozzo.com>
      Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Message-ID: <20230711172553.234055-2-andrey.drobyshev@virtuozzo.com>
      c54483b6
    • Fabiano Rosas's avatar
      block-migration: Ensure we don't crash during migration cleanup · f187609f
      Fabiano Rosas authored
      
      We can fail the blk_insert_bs() at init_blk_migration(), leaving the
      BlkMigDevState without a dirty_bitmap and BlockDriverState. Account
      for the possibly missing elements when doing cleanup.
      
      Fix the following crashes:
      
      Thread 1 "qemu-system-x86" received signal SIGSEGV, Segmentation fault.
      0x0000555555ec83ef in bdrv_release_dirty_bitmap (bitmap=0x0) at ../block/dirty-bitmap.c:359
      359         BlockDriverState *bs = bitmap->bs;
       #0  0x0000555555ec83ef in bdrv_release_dirty_bitmap (bitmap=0x0) at ../block/dirty-bitmap.c:359
       #1  0x0000555555bba331 in unset_dirty_tracking () at ../migration/block.c:371
       #2  0x0000555555bbad98 in block_migration_cleanup_bmds () at ../migration/block.c:681
      
      Thread 1 "qemu-system-x86" received signal SIGSEGV, Segmentation fault.
      0x0000555555e971ff in bdrv_op_unblock (bs=0x0, op=BLOCK_OP_TYPE_BACKUP_SOURCE, reason=0x0) at ../block.c:7073
      7073        QLIST_FOREACH_SAFE(blocker, &bs->op_blockers[op], list, next) {
       #0  0x0000555555e971ff in bdrv_op_unblock (bs=0x0, op=BLOCK_OP_TYPE_BACKUP_SOURCE, reason=0x0) at ../block.c:7073
       #1  0x0000555555e9734a in bdrv_op_unblock_all (bs=0x0, reason=0x0) at ../block.c:7095
       #2  0x0000555555bbae13 in block_migration_cleanup_bmds () at ../migration/block.c:690
      
      Signed-off-by: default avatarFabiano Rosas <farosas@suse.de>
      Message-id: 20230731203338.27581-1-farosas@suse.de
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      f187609f
  2. Aug 29, 2023
    • Stefan Hajnoczi's avatar
      Merge tag '2023q3-bsd-user-pull-request' of https://gitlab.com/bsdimp/qemu into staging · 813bac3d
      Stefan Hajnoczi authored
      Pull request for bsd-user 2023 Q3 (first batch)
      
      First batch of commits submitted by my GSoC student Karim Taha
      
      These implement	the stat, statfs, statfh and dirents system calls.
      
      In addition, fix a missing break statment, and submit Richard Henderson's
      elf stat mmap cleansup.
      
      # -----BEGIN PGP SIGNATURE-----
      # Comment: GPGTools - https://gpgtools.org
      #
      # iQIzBAABCgAdFiEEIDX4lLAKo898zeG3bBzRKH2wEQAFAmTtL6EACgkQbBzRKH2w
      # EQALHQ//WOoHYxpNS1hy+oYIAvjW0JOqz9gCSFR0d56mDBShm7WO/9FZA6eGAzYQ
      # i5kBSVFwEBlM76K5vLTbRvCbCbAwlpAdMgI7HXValjspNhvu/66DNWmdil6GnXKu
      # 4QRaM/QGrobmYrNmf4SdgyjlMVH7wGyTrCTpXfvPfktZLAbQq7dCyNPTsOYXJP2V
      # LASk8j2gyW6fDi3z1AxTNVfS7BJX6DWMhPhlvC/aUOLVVGgj9Hw9uxPaKXC1t47D
      # bpZ+wJb4GMkcsmuiGJ40CXowjQ+M1lBrA4rN+lTMJNttZJ+TUYmizTFkYhX+B28h
      # Q2JZy5eLXlsxxRByOkOwFczfDT6jlG4BlK4jmDOvKlrTPLaWIHjezztTavWIZDlU
      # ce1oXQo3KEdWoa/QEsuxLeBbE+uZpu5+NqLeCk1cU4GPks8nbAcD7BGl6dDHKXM4
      # 8vCcOMZLwO+xi5Etgcf/MtTPMpSO0rD9fTq2VSdYX0H197mkOdyCDAXjfKPsBUIE
      # VLAnCFfajMNRc5ITobEbz4GiMD/xy5s8eDZNeefG8lgySpl9XB2Lvw7SWDz1imsL
      # nBgQH6RHznU65wEvVGtnCGMj5kIMbohY2AGR75iGkRdgR+t2zMjUIiaU/qivD+6z
      # IEJ2jqDWqtQb81jFNrFzJlsim+GYRl0HcaEmyye2bgf5LHRSSNM=
      # =ORJ7
      # -----END PGP SIGNATURE-----
      # gpg: Signature made Mon 28 Aug 2023 19:37:05 EDT
      # gpg:                using RSA key 2035F894B00AA3CF7CCDE1B76C1CD1287DB01100
      # gpg: Good signature from "Warner Losh <wlosh@netflix.com>" [unknown]
      # gpg:                 aka "Warner Losh <imp@bsdimp.com>" [unknown]
      # gpg:                 aka "Warner Losh <imp@freebsd.org>" [unknown]
      # gpg:                 aka "Warner Losh <imp@village.org>" [unknown]
      # gpg:                 aka "Warner Losh <wlosh@bsdimp.com>" [unknown]
      # gpg: WARNING: This key is not certified with a trusted signature!
      # gpg:          There is no indication that the signature belongs to the owner.
      # Primary key fingerprint: 2035 F894 B00A A3CF 7CCD  E1B7 6C1C D128 7DB0 1100
      
      * tag '2023q3-bsd-user-pull-request' of https://gitlab.com/bsdimp/qemu
      
      : (36 commits)
        bsd-user: Add missing break after do_bsd_preadv
        bsd-user: Add getdents and fcntl related system calls
        bsd-user: Add glue for statfs related system calls
        bsd-user: Add glue for getfh and related syscalls
        bsd-user: Add glue for the freebsd11_stat syscalls
        bsd-user: Add os-stat.c to the build
        bsd-user: Implement do_freebsd_realpathat syscall
        bsd-user: Implement freebsd11 netbsd stat related syscalls
        bsd-user: Implement freebsd11 getdirents related syscalls
        bsd-user: Implement freebsd11 statfs related syscalls
        bsd-user: Implement freebsd11 fstat and fhstat related syscalls
        bsd-user: Implement freebsd11 stat related syscalls
        bsd-user: Implement stat related syscalls
        bsd-user: Implement getdents related syscalls
        bsd-user: Implement statfs related syscalls
        bsd-user: Implement statfh related syscalls
        bsd-user: Implement stat related syscalls
        bsd-uesr: Implement h2t_freebsd_stat and h2t_freebsd_statfs functions
        bsd-user: Implement target_to_host_fcntl_cmd
        bsd-user: Implement h2t_freebds11_statfs
        ...
      
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      813bac3d
  3. Aug 28, 2023
Loading