Merge tag 'for-5.5/dm-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/devic...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 25 Nov 2019 19:53:26 +0000 (11:53 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 25 Nov 2019 19:53:26 +0000 (11:53 -0800)
Pull device mapper updates from Mike Snitzer:

 - Fix DM core to disallow stacking request-based DM on partitions.

 - Fix DM raid target to properly resync raidset even if bitmap needed
   additional pages.

 - Fix DM crypt performance regression due to use of WQ_HIGHPRI for the
   IO and crypt workqueues.

 - Fix DM integrity metadata layout that was aligned on 128K boundary
   rather than the intended 4K boundary (removes 124K of wasted space
   for each metadata block).

 - Improve the DM thin, cache and clone targets to use spin_lock_irq
   rather than spin_lock_irqsave where possible.

 - Fix DM thin single thread performance that was lost due to needless
   workqueue wakeups.

 - Fix DM zoned target performance that was lost due to excessive
   backing device checks.

 - Add ability to trigger write failure with the DM dust test target.

 - Fix whitespace indentation in drivers/md/Kconfig.

 - Various smalls fixes and cleanups (e.g. use struct_size, fix
   uninitialized variable, variable renames, etc).

* tag 'for-5.5/dm-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm: (22 commits)
  Revert "dm crypt: use WQ_HIGHPRI for the IO and crypt workqueues"
  dm: Fix Kconfig indentation
  dm thin: wakeup worker only when deferred bios exist
  dm integrity: fix excessive alignment of metadata runs
  dm raid: Remove unnecessary negation of a shift in raid10_format_to_md_layout
  dm zoned: reduce overhead of backing device checks
  dm dust: add limited write failure mode
  dm dust: change ret to r in dust_map_read and dust_map
  dm dust: change result vars to r
  dm cache: replace spin_lock_irqsave with spin_lock_irq
  dm bio prison: replace spin_lock_irqsave with spin_lock_irq
  dm thin: replace spin_lock_irqsave with spin_lock_irq
  dm clone: add bucket_lock_irq/bucket_unlock_irq helpers
  dm clone: replace spin_lock_irqsave with spin_lock_irq
  dm writecache: handle REQ_FUA
  dm writecache: fix uninitialized variable warning
  dm stripe: use struct_size() in kmalloc()
  dm raid: streamline rs_get_progress() and its raid_status() caller side
  dm raid: simplify rs_setup_recovery call chain
  dm raid: to ensure resynchronization, perform raid set grow in preresume
  ...

1  2 
drivers/md/dm-zoned-metadata.c
include/linux/device-mapper.h

index 069e4675da6b42df9e1cb6828f75ed9acf3a47bb,ac1179ca80d984d3191128925bfc35608badd710..22b3cb0050a757890dd01d445e25fd69d93ff721
@@@ -1212,15 -1244,15 +1220,16 @@@ static int dmz_update_zone(struct dmz_m
         * GFP_NOIO was specified.
         */
        noio_flag = memalloc_noio_save();
 -      ret = blkdev_report_zones(zmd->dev->bdev, dmz_start_sect(zmd, zone),
 -                                &blkz, &nr_blkz);
 +      ret = blkdev_report_zones(zmd->dev->bdev, dmz_start_sect(zmd, zone), 1,
 +                                dmz_update_zone_cb, zone);
        memalloc_noio_restore(noio_flag);
 -      if (!nr_blkz)
 +
 +      if (ret == 0)
                ret = -EIO;
 -      if (ret) {
 +      if (ret < 0) {
                dmz_dev_err(zmd->dev, "Get zone %u report failed",
                            dmz_id(zmd, zone));
+               dmz_check_bdev(zmd->dev);
                return ret;
        }
  
Simple merge