linux/drivers/md
Tejun Heo e9c7469bb4 md: implment REQ_FLUSH/FUA support
This patch converts md to support REQ_FLUSH/FUA instead of now
deprecated REQ_HARDBARRIER.  In the core part (md.c), the following
changes are notable.

* Unlike REQ_HARDBARRIER, REQ_FLUSH/FUA don't interfere with
  processing of other requests and thus there is no reason to mark the
  queue congested while FLUSH/FUA is in progress.

* REQ_FLUSH/FUA failures are final and its users don't need retry
  logic.  Retry logic is removed.

* Preflush needs to be issued to all member devices but FUA writes can
  be handled the same way as other writes - their processing can be
  deferred to request_queue of member devices.  md_barrier_request()
  is renamed to md_flush_request() and simplified accordingly.

For linear, raid0 and multipath, the core changes are enough.  raid1,
5 and 10 need the following conversions.

* raid1: Handling of FLUSH/FUA bio's can simply be deferred to
  request_queues of member devices.  Barrier related logic removed.

* raid5: Queue draining logic dropped.  FUA bit is propagated through
  biodrain and stripe resconstruction such that all the updated parts
  of the stripe are written out with FUA writes if any of the dirtying
  writes was FUA.  preread_active_stripes handling in make_request()
  is updated as suggested by Neil Brown.

* raid10: FUA bit needs to be propagated to write clones.

linear, raid0, 1, 5 and 10 tested.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reviewed-by: Neil Brown <neilb@suse.de>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
2010-09-10 12:35:38 +02:00
..
.gitignore
bitmap.c
bitmap.h
dm-bio-record.h
dm-crypt.c dm: use dm_target_offset macro 2010-08-12 04:14:11 +01:00
dm-delay.c dm delay: support discard 2010-08-12 04:14:13 +01:00
dm-exception-store.c dm snapshot: test chunk size against both origin and snapshot 2010-08-12 04:13:51 +01:00
dm-exception-store.h dm snapshot: test chunk size against both origin and snapshot 2010-08-12 04:13:51 +01:00
dm-io.c
dm-ioctl.c dm: allow autoloading of dm mod 2010-08-12 04:14:05 +01:00
dm-kcopyd.c
dm-linear.c dm: use dm_target_offset macro 2010-08-12 04:14:11 +01:00
dm-log-userspace-base.c
dm-log-userspace-transfer.c
dm-log-userspace-transfer.h
dm-log.c
dm-mpath.c dm mpath: support discard 2010-08-12 04:14:32 +01:00
dm-mpath.h
dm-path-selector.c
dm-path-selector.h
dm-queue-length.c
dm-raid1.c dm: use dm_target_offset macro 2010-08-12 04:14:11 +01:00
dm-region-hash.c
dm-round-robin.c
dm-service-time.c
dm-snap-persistent.c dm snapshot: persistent use define for disk header chunk size 2010-08-12 04:13:59 +01:00
dm-snap-transient.c
dm-snap.c dm: rename map_info flush_request to target_request_nr 2010-08-12 04:14:04 +01:00
dm-stripe.c dm stripe: support discards 2010-08-12 04:14:26 +01:00
dm-sysfs.c
dm-table.c dm: linear support discard 2010-08-12 04:14:08 +01:00
dm-target.c dm: error return error for discards 2010-08-12 04:14:14 +01:00
dm-uevent.c
dm-uevent.h
dm-zero.c dm: zero silently drop discards 2010-08-12 04:14:12 +01:00
dm.c block: deprecate barrier and replace blk_queue_ordered() with blk_queue_flush() 2010-09-10 12:35:36 +02:00
dm.h dm: linear support discard 2010-08-12 04:14:08 +01:00
faulty.c
Kconfig
linear.c md: implment REQ_FLUSH/FUA support 2010-09-10 12:35:38 +02:00
linear.h
Makefile
md.c md: implment REQ_FLUSH/FUA support 2010-09-10 12:35:38 +02:00
md.h md: implment REQ_FLUSH/FUA support 2010-09-10 12:35:38 +02:00
multipath.c md: implment REQ_FLUSH/FUA support 2010-09-10 12:35:38 +02:00
multipath.h
raid0.c md: implment REQ_FLUSH/FUA support 2010-09-10 12:35:38 +02:00
raid0.h
raid1.c md: implment REQ_FLUSH/FUA support 2010-09-10 12:35:38 +02:00
raid1.h md: implment REQ_FLUSH/FUA support 2010-09-10 12:35:38 +02:00
raid5.c md: implment REQ_FLUSH/FUA support 2010-09-10 12:35:38 +02:00
raid5.h md: implment REQ_FLUSH/FUA support 2010-09-10 12:35:38 +02:00
raid10.c md: implment REQ_FLUSH/FUA support 2010-09-10 12:35:38 +02:00
raid10.h