1. 03 Jul, 2024 5 commits
  2. 02 Jul, 2024 6 commits
  3. 26 Jun, 2024 2 commits
    • Mikulas Patocka's avatar
      dm: optimize flushes · aaa53168
      Mikulas Patocka authored
      Device mapper sends flush bios to all the targets and the targets send it
      to the underlying device. That may be inefficient, for example if a table
      contains 10 linear targets pointing to the same physical device, then
      device mapper would send 10 flush bios to that device - despite the fact
      that only one bio would be sufficient.
      
      This commit optimizes the flush behavior. It introduces a per-target
      variable flush_bypasses_map - it is set when the target supports flush
      optimization - currently, the dm-linear and dm-stripe targets support it.
      When all the targets in a table have flush_bypasses_map,
      flush_bypasses_map on the table is set. __send_empty_flush tests if the
      table has flush_bypasses_map - and if it has, no flush bios are sent to
      the targets via the "map" method and the list dm_table->devices is
      iterated and the flush bios are sent to each member of the list.
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Reviewed-by: default avatarMike Snitzer <snitzer@kernel.org>
      Suggested-by: default avatarYang Yang <yang.yang@vivo.com>
      aaa53168
    • Mikulas Patocka's avatar
      block: change rq_integrity_vec to respect the iterator · cf546dd2
      Mikulas Patocka authored
      If we allocate a bio that is larger than NVMe maximum request size,
      attach integrity metadata to it and send it to the NVMe subsystem, the
      integrity metadata will be corrupted.
      
      Splitting the bio works correctly. The function bio_split will clone the
      bio, trim the iterator of the first bio and advance the iterator of the
      second bio.
      
      However, the function rq_integrity_vec has a bug - it returns the first
      vector of the bio's metadata and completely disregards the metadata
      iterator that was advanced when the bio was split. Thus, the second bio
      uses the same metadata as the first bio and this leads to metadata
      corruption.
      
      This commit changes rq_integrity_vec, so that it calls mp_bvec_iter_bvec
      instead of returning the first vector. mp_bvec_iter_bvec reads the
      iterator and uses it to build a bvec for the current position in the
      iterator.
      
      The "queue_max_integrity_segments(rq->q) > 1" check was removed, because
      the updated rq_integrity_vec function works correctly with multiple
      segments.
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Reviewed-by: default avatarAnuj Gupta <anuj20.g@samsung.com>
      Reviewed-by: default avatarKanchan Joshi <joshi.k@samsung.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Link: https://lore.kernel.org/r/49d1afaa-f934-6ed2-a678-e0d428c63a65@redhat.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
      cf546dd2
  4. 24 Jun, 2024 2 commits
  5. 23 Jun, 2024 1 commit
  6. 21 Jun, 2024 4 commits
  7. 20 Jun, 2024 18 commits
  8. 19 Jun, 2024 2 commits
    • Jens Axboe's avatar
      Merge branch 'for-6.11/block-limits' into for-6.11/block · 69c34f07
      Jens Axboe authored
      Merge in last round of queue limits changes from Christoph.
      
      * for-6.11/block-limits: (26 commits)
        block: move the bounce flag into the features field
        block: move the skip_tagset_quiesce flag to queue_limits
        block: move the pci_p2pdma flag to queue_limits
        block: move the zone_resetall flag to queue_limits
        block: move the zoned flag into the features field
        block: move the poll flag to queue_limits
        block: move the dax flag to queue_limits
        block: move the nowait flag to queue_limits
        block: move the synchronous flag to queue_limits
        block: move the stable_writes flag to queue_limits
        block: move the io_stat flag setting to queue_limits
        block: move the add_random flag to queue_limits
        block: move the nonrot flag to queue_limits
        block: move cache control settings out of queue->flags
        block: remove blk_flush_policy
        block: freeze the queue in queue_attr_store
        nbd: move setting the cache control flags to __nbd_set_size
        virtio_blk: remove virtblk_update_cache_mode
        loop: fold loop_update_rotational into loop_reconfigure_limits
        loop: also use the default block size from an underlying block device
        ...
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      69c34f07
    • Christoph Hellwig's avatar
      block: move the bounce flag into the features field · 339d3948
      Christoph Hellwig authored
      Move the bounce flag into the features field to reclaim a little bit of
      space.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarDamien Le Moal <dlemoal@kernel.org>
      Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
      Link: https://lore.kernel.org/r/20240617060532.127975-27-hch@lst.deSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
      339d3948