Merge tag 'for-4.12/dm-changes' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 3 May 2017 17:31:20 +0000 (10:31 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 3 May 2017 17:31:20 +0000 (10:31 -0700)
Pull device mapper updates from Mike Snitzer:

 - A major update for DM cache that reduces the latency for deciding
   whether blocks should migrate to/from the cache. The bio-prison-v2
   interface supports this improvement by enabling direct dispatch of
   work to workqueues rather than having to delay the actual work
   dispatch to the DM cache core. So the dm-cache policies are much more
   nimble by being able to drive IO as they see fit. One immediate
   benefit from the improved latency is a cache that should be much more
   adaptive to changing workloads.

 - Add a new DM integrity target that emulates a block device that has
   additional per-sector tags that can be used for storing integrity
   information.

 - Add a new authenticated encryption feature to the DM crypt target
   that builds on the capabilities provided by the DM integrity target.

 - Add MD interface for switching the raid4/5/6 journal mode and update
   the DM raid target to use it to enable aid4/5/6 journal write-back
   support.

 - Switch the DM verity target over to using the asynchronous hash
   crypto API (this helps work better with architectures that have
   access to off-CPU algorithm providers, which should reduce CPU
   utilization).

 - Various request-based DM and DM multipath fixes and improvements from
   Bart and Christoph.

 - A DM thinp target fix for a bio structure leak that occurs for each
   discard IFF discard passdown is enabled.

 - A fix for a possible deadlock in DM bufio and a fix to re-check the
   new buffer allocation watermark in the face of competing admin
   changes to the 'max_cache_size_bytes' tunable.

 - A couple DM core cleanups.

* tag 'for-4.12/dm-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm: (50 commits)
  dm bufio: check new buffer allocation watermark every 30 seconds
  dm bufio: avoid a possible ABBA deadlock
  dm mpath: make it easier to detect unintended I/O request flushes
  dm mpath: cleanup QUEUE_IF_NO_PATH bit manipulation by introducing assign_bit()
  dm mpath: micro-optimize the hot path relative to MPATHF_QUEUE_IF_NO_PATH
  dm: introduce enum dm_queue_mode to cleanup related code
  dm mpath: verify __pg_init_all_paths locking assumptions at runtime
  dm: verify suspend_locking assumptions at runtime
  dm block manager: remove an unused argument from dm_block_manager_create()
  dm rq: check blk_mq_register_dev() return value in dm_mq_init_request_queue()
  dm mpath: delay requeuing while path initialization is in progress
  dm mpath: avoid that path removal can trigger an infinite loop
  dm mpath: split and rename activate_path() to prepare for its expanded use
  dm ioctl: prevent stack leak in dm ioctl call
  dm integrity: use previously calculated log2 of sectors_per_block
  dm integrity: use hex2bin instead of open-coded variant
  dm crypt: replace custom implementation of hex2bin()
  dm crypt: remove obsolete references to per-CPU state
  dm verity: switch to using asynchronous hash crypto API
  dm crypt: use WQ_HIGHPRI for the IO and crypt workqueues
  ...

18 files changed:
1  2 
drivers/md/Kconfig
drivers/md/Makefile
drivers/md/dm-cache-metadata.c
drivers/md/dm-cache-target.c
drivers/md/dm-core.h
drivers/md/dm-crypt.c
drivers/md/dm-linear.c
drivers/md/dm-mpath.c
drivers/md/dm-raid.c
drivers/md/dm-rq.c
drivers/md/dm-stripe.c
drivers/md/dm-table.c
drivers/md/dm-thin.c
drivers/md/dm-verity-fec.c
drivers/md/dm.c
drivers/md/raid5-cache.c
drivers/md/raid5.h
include/linux/device-mapper.h

Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc drivers/md/dm.c
Simple merge
Simple merge
index 625c7f16fd6b3e0db7e439f31a44c66ed3e1b8ba,ec8ca15774d7cff9305dbe096c886c6abdbca330..f6536399677abcb43e973017ab1f3773bdad90a3
@@@ -741,4 -775,35 +751,5 @@@ extern struct stripe_head 
  raid5_get_active_stripe(struct r5conf *conf, sector_t sector,
                        int previous, int noblock, int noquiesce);
  extern int raid5_calc_degraded(struct r5conf *conf);
 -extern int r5l_init_log(struct r5conf *conf, struct md_rdev *rdev);
 -extern void r5l_exit_log(struct r5l_log *log);
 -extern int r5l_write_stripe(struct r5l_log *log, struct stripe_head *head_sh);
 -extern void r5l_write_stripe_run(struct r5l_log *log);
 -extern void r5l_flush_stripe_to_raid(struct r5l_log *log);
 -extern void r5l_stripe_write_finished(struct stripe_head *sh);
 -extern int r5l_handle_flush_request(struct r5l_log *log, struct bio *bio);
 -extern void r5l_quiesce(struct r5l_log *log, int state);
 -extern bool r5l_log_disk_error(struct r5conf *conf);
 -extern bool r5c_is_writeback(struct r5l_log *log);
 -extern int
 -r5c_try_caching_write(struct r5conf *conf, struct stripe_head *sh,
 -                    struct stripe_head_state *s, int disks);
 -extern void
 -r5c_finish_stripe_write_out(struct r5conf *conf, struct stripe_head *sh,
 -                          struct stripe_head_state *s);
 -extern void r5c_release_extra_page(struct stripe_head *sh);
 -extern void r5c_use_extra_page(struct stripe_head *sh);
 -extern void r5l_wake_reclaim(struct r5l_log *log, sector_t space);
 -extern void r5c_handle_cached_data_endio(struct r5conf *conf,
 -      struct stripe_head *sh, int disks, struct bio_list *return_bi);
 -extern int r5c_cache_data(struct r5l_log *log, struct stripe_head *sh,
 -                        struct stripe_head_state *s);
 -extern void r5c_make_stripe_write_out(struct stripe_head *sh);
 -extern void r5c_flush_cache(struct r5conf *conf, int num);
 -extern void r5c_check_stripe_cache_usage(struct r5conf *conf);
 -extern void r5c_check_cached_full_stripe(struct r5conf *conf);
 -extern struct md_sysfs_entry r5c_journal_mode;
 -extern void r5c_update_on_rdev_error(struct mddev *mddev);
 -extern bool r5c_big_stripe_cached(struct r5conf *conf, sector_t sect);
+ extern int r5c_journal_mode_set(struct mddev *mddev, int journal_mode);
  #endif
Simple merge