Merge tag 'for-5.1/dm-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/devic...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 10 Mar 2019 01:40:27 +0000 (17:40 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 10 Mar 2019 01:40:27 +0000 (17:40 -0800)
Pull device mapper updates from Mike Snitzer:

 - Update bio-based DM core to always call blk_queue_split() and update
   DM targets to properly advertise discard limits that
   blk_queue_split() looks at when dtermining to split discard. Whereby
   allowing DM core's own 'split_discard_bios' to be removed.

 - Improve DM cache target to provide support for discard passdown to
   the origin device.

 - Introduce support to directly boot to a DM mapped device from init by
   using dm-mod.create= module param. This eliminates the need for an
   elaborate initramfs that is otherwise needed to create DM devices.

   This feature's implementation has been worked on for quite some time
   (got up to v12) and is of particular interest to Android and other
   more embedded platforms (e.g. ARM).

 - Rate limit errors from the DM integrity target that were identified
   as the cause for recent NMI hangs due to console limitations.

 - Add sanity checks for user input to thin-pool and external snapshot
   creation.

 - Remove some unused leftover kmem caches from when old .request_fn
   request-based support was removed.

 - Various small cleanups and fixes to targets (e.g. typos, needless
   unlikely() annotations, use struct_size(), remove needless
   .direct_access method from dm-snapshot)

* tag 'for-5.1/dm-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
  dm integrity: limit the rate of error messages
  dm snapshot: don't define direct_access if we don't support it
  dm cache: add support for discard passdown to the origin device
  dm writecache: fix typo in name for writeback_wq
  dm: add support to directly boot to a mapped device
  dm thin: add sanity checks to thin-pool and external snapshot creation
  dm block manager: remove redundant unlikely annotation
  dm verity fec: remove redundant unlikely annotation
  dm integrity: remove redundant unlikely annotation
  dm: always call blk_queue_split() in dm_process_bio()
  dm: fix to_sector() for 32bit
  dm switch: use struct_size() in kzalloc()
  dm: remove unused _rq_tio_cache and _rq_cache
  dm: eliminate 'split_discard_bios' flag from DM target interface
  dm: update dm_process_bio() to split bio if in ->make_request_fn()

1  2 
drivers/md/dm-rq.c

diff --combined drivers/md/dm-rq.c
index b2c03c079a8db21eb19ec264a0760598e84624bf,9428cd951e3b09d3f366985670ef371333fe8c4f..09773636602d3d86728b127ddb67b2d674b67cae
  
  #define DM_MSG_PREFIX "core-rq"
  
+ /*
+  * One of these is allocated per request.
+  */
+ struct dm_rq_target_io {
+       struct mapped_device *md;
+       struct dm_target *ti;
+       struct request *orig, *clone;
+       struct kthread_work work;
+       blk_status_t error;
+       union map_info info;
+       struct dm_stats_aux stats_aux;
+       unsigned long duration_jiffies;
+       unsigned n_sectors;
+       unsigned completed;
+ };
  #define DM_MQ_NR_HW_QUEUES 1
  #define DM_MQ_QUEUE_DEPTH 2048
  static unsigned dm_mq_nr_hw_queues = DM_MQ_NR_HW_QUEUES;
@@@ -527,7 -543,7 +543,7 @@@ int dm_mq_init_request_queue(struct map
        md->tag_set->ops = &dm_mq_ops;
        md->tag_set->queue_depth = dm_get_blk_mq_queue_depth();
        md->tag_set->numa_node = md->numa_node_id;
 -      md->tag_set->flags = BLK_MQ_F_SHOULD_MERGE | BLK_MQ_F_SG_MERGE;
 +      md->tag_set->flags = BLK_MQ_F_SHOULD_MERGE;
        md->tag_set->nr_hw_queues = dm_get_blk_mq_nr_hw_queues();
        md->tag_set->driver_data = md;