remarkable-linux/drivers/md
Mike Snitzer 3ae7065616 dm: retain table limits when swapping to new table with no devices
Add a safety net that will re-use the DM device's existing limits in the
event that DM device has a temporary table that doesn't have any
component devices.  This is to reduce the chance that requests not
respecting the hardware limits will reach the device.

DM recalculates queue limits based only on devices which currently exist
in the table.  This creates a problem in the event all devices are
temporarily removed such as all paths being lost in multipath.  DM will
reset the limits to the maximum permissible, which can then assemble
requests which exceed the limits of the paths when the paths are
restored.  The request will fail the blk_rq_check_limits() test when
sent to a path with lower limits, and will be retried without end by
multipath.  This became a much bigger issue after v3.6 commit fe86cdcef
("block: do not artificially constrain max_sectors for stacking
drivers").

Reported-by: David Jeffery <djeffery@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
2012-09-26 23:45:45 +01:00
..
persistent-data dm persistent data: introduce dm_bm_set_read_only 2012-07-27 15:08:15 +01:00
bitmap.c md/raid1: submit IO from originating thread instead of md thread. 2012-08-02 08:33:20 +10:00
bitmap.h
dm-bio-record.h
dm-bufio.c
dm-bufio.h
dm-crypt.c dm thin: commit before gathering status 2012-07-27 15:08:16 +01:00
dm-delay.c dm thin: commit before gathering status 2012-07-27 15:08:16 +01:00
dm-exception-store.c dm: replace simple_strtoul 2012-07-27 15:07:59 +01:00
dm-exception-store.h
dm-flakey.c dm thin: commit before gathering status 2012-07-27 15:08:16 +01:00
dm-io.c
dm-ioctl.c dm thin: commit before gathering status 2012-07-27 15:08:16 +01:00
dm-kcopyd.c
dm-linear.c dm thin: commit before gathering status 2012-07-27 15:08:16 +01:00
dm-log-userspace-base.c
dm-log-userspace-transfer.c
dm-log-userspace-transfer.h
dm-log.c dm: use memweight() 2012-07-30 17:25:16 -07:00
dm-mpath.c dm mpath: only retry ioctl when no paths if queue_if_no_path set 2012-09-26 23:45:41 +01:00
dm-mpath.h
dm-path-selector.c
dm-path-selector.h
dm-queue-length.c
dm-raid.c Merge branch 'for-next' of git://neil.brown.name/md 2012-08-01 09:02:01 -07:00
dm-raid1.c dm thin: commit before gathering status 2012-07-27 15:08:16 +01:00
dm-region-hash.c dm raid1: fix crash with mirror recovery and discard 2012-07-20 14:25:03 +01:00
dm-round-robin.c
dm-service-time.c
dm-snap-persistent.c
dm-snap-transient.c
dm-snap.c dm thin: commit before gathering status 2012-07-27 15:08:16 +01:00
dm-stripe.c dm thin: commit before gathering status 2012-07-27 15:08:16 +01:00
dm-sysfs.c
dm-table.c dm: retain table limits when swapping to new table with no devices 2012-09-26 23:45:45 +01:00
dm-target.c
dm-thin-metadata.c dm thin metadata: introduce dm_pool_abort_metadata 2012-07-27 15:08:15 +01:00
dm-thin-metadata.h dm thin metadata: introduce dm_pool_abort_metadata 2012-07-27 15:08:15 +01:00
dm-thin.c dm thin: do not set discard_zeroes_data 2012-09-26 23:45:39 +01:00
dm-uevent.c
dm-uevent.h
dm-verity.c dm thin: commit before gathering status 2012-07-27 15:08:16 +01:00
dm-zero.c
dm.c dm: retain table limits when swapping to new table with no devices 2012-09-26 23:45:45 +01:00
dm.h dm: retain table limits when swapping to new table with no devices 2012-09-26 23:45:45 +01:00
faulty.c
Kconfig Additional md update for 3.6 2012-08-02 11:34:40 -07:00
linear.c
linear.h
Makefile
md.c md: make sure metadata is updated when spares are activated or removed. 2012-09-19 12:54:22 +10:00
md.h blk: pass from_schedule to non-request unplug functions. 2012-07-31 09:08:15 +02:00
multipath.c
multipath.h
raid0.c
raid0.h
raid1.c Additional md update for 3.6 2012-08-02 11:34:40 -07:00
raid1.h md/raid1: prevent merging too large request 2012-07-31 10:03:53 +10:00
raid5.c md/raid5: fix calculate of 'degraded' when a replacement becomes active. 2012-09-19 12:52:30 +10:00
raid5.h Additional md update for 3.6 2012-08-02 11:34:40 -07:00
raid10.c md/raid10: fix problem with on-stack allocation of r10bio structure. 2012-08-18 09:51:42 +10:00
raid10.h md/raid10: fix problem with on-stack allocation of r10bio structure. 2012-08-18 09:51:42 +10:00