- Fix DM core's potential for q->make_request_fn NULL pointer in the
  unlikely case that a DM device is created without a DM table and
  then accessed due to upper-layer userspace code or user error.

- Fix DM thin-provisioning's metadata_pre_commit_callback to not use
  memory after it is free'd.  Also refactor code to disallow changing
  the thin-pool's data device once in use -- doing so guarantees smae
  lifetime of pool's data device relative to the pool metadata.

- Fix DM space maps used by DM thinp and DM cache to avoid reuse of a
  already used block. This race was identified with extremely heavy
  snapshot use in the context of DM thin provisioning.

- Fix DM raid's table status relative to an active rebuild.

- Fix DM crypt to use GFP_NOIO rather than GFP_NOFS in call to
  skcipher_request_alloc(). Also fix benbi IV constructor crash if
  used in authenticated mode.

- Add DM crypt support for Elephant diffuser to allow for Bitlocker
  compatibility.

- Fix DM verity target to not prefetch hash blocks for data that has
  already been verified.

- Fix DM writecache's incorrect flush sequence during commit when in
  SSD mode.

- Improve DM writecache's sequential write performance on SSDs.

- Add DM zoned target support for zone sizes smaller than 128MiB.

- Add DM multipath 'queue_if_no_path_timeout_secs' module param to
  allow timeout if path isn't reinstated. This allows users a kernel
  safety-net against IO hanging indefinitely, due to no active paths,
  that has historically only been provided by multipathd userspace.

- Various DM code cleanups to use true/false rather than 1/0, a
  variable rename in dm-dust, and fix for a math error in comment for
  DM thin metadata's ondisk format.
dm: fix potential for q->make_request_fn NULL pointer

Move blk_queue_make_request() to dm.c:alloc_dev() so that
q->make_request_fn is never NULL during the lifetime of a DM device
(even one that is created without a DM table).

Otherwise generic_make_request() will crash simply by doing:
  dmsetup create -n test
  mount /dev/dm-N /mnt

While at it, move ->congested_data initialization out of
dm.c:alloc_dev() and into the bio-based specific init method.

Reported-by: Stefan Bader <stefan.bader@canonical.com>
BugLink: https://bugs.launchpad.net/bugs/1860231
Fixes: ff36ab34583a ("dm: remove request-based logic from make_request_fn wrapper")
Depends-on: c12c9a3c3860c ("dm: various cleanups to md->queue initialization code")
Cc: stable@vger.kernel.org
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
1 file changed