android_kernel_xiaomi_sm8350/drivers/md
NeilBrown c0e485216d [PATCH] md: fix is_mddev_idle calculation now that disk/sector accounting happens when request completes
md needs to monitor the rate of requests to its devices when doing
resync/recovery so that it can back-off when there is non-resync IO.  It
does this by comparing resync IO, which it counts, with total IO which is
taken from disk_stats.

disk_stats were recently changed to account sectors when a request
completes instead of when it is queued.  This upsets md's calculations.

We could do the sync_io accounting at the end of requests too, but that has
problems.  If an underlying device is an md array, the accounting will
still be done when the request is submitted.  This could be changed for
some raid levels, but it cannot be changed for raid0 or linear without
substantial code changes.

So instead, we increase the error that is_mddev_idle allows, up to the
maximum amount of resync IO that can be in flight at any time.  The
calculation is current fragile as each personality as different limits for
in-flight resync.  This should be fixed up.

For now, this simple patch fixes the problem.

Increasing the error margin decreases the sensitivity to non-resync IO.  To
partially compensate for this, the time to wait when non-resync IO is
detected is increased so that less steady IO is required to keep the resync
at bay.

Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-11-18 07:49:46 -08:00
..
raid6test
bitmap.c [PATCH] md: don't pass a NULL file* into ->prepare_write() 2005-11-18 07:49:46 -08:00
dm-bio-list.h
dm-bio-record.h
dm-crypt.c [PATCH] Use sg_set_buf/sg_init_one where applicable 2005-10-30 11:19:43 +11:00
dm-emc.c
dm-exception-store.c
dm-hw-handler.c
dm-hw-handler.h
dm-io.c [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
dm-io.h
dm-ioctl.c
dm-linear.c
dm-log.c
dm-log.h
dm-mpath.c [PATCH] device-mapper: Fix queue_if_no_path initialisation 2005-09-28 07:46:42 -07:00
dm-mpath.h
dm-path-selector.c
dm-path-selector.h
dm-raid1.c [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
dm-round-robin.c
dm-snap.c
dm-snap.h
dm-stripe.c
dm-table.c
dm-target.c
dm-zero.c
dm.c
dm.h
faulty.c
Kconfig
kcopyd.c
kcopyd.h
linear.c [BLOCK] Unify the seperate read/write io stat fields into arrays 2005-11-01 09:26:16 +01:00
Makefile
md.c [PATCH] md: fix is_mddev_idle calculation now that disk/sector accounting happens when request completes 2005-11-18 07:49:46 -08:00
mktables.c
multipath.c [PATCH] md: convert 'faulty' and 'in_sync' fields to bits in 'flags' field 2005-11-09 07:56:38 -08:00
raid0.c [BLOCK] Unify the seperate read/write io stat fields into arrays 2005-11-01 09:26:16 +01:00
raid1.c [PATCH] md: make manual repair work for raid1 2005-11-09 07:56:39 -08:00
raid5.c [PATCH] md: fix some locking and module refcounting issues with md's use of sysfs 2005-11-09 07:56:39 -08:00
raid6.h
raid6algos.c
raid6altivec.uc
raid6int.uc
raid6main.c [PATCH] md: convert 'faulty' and 'in_sync' fields to bits in 'flags' field 2005-11-09 07:56:38 -08:00
raid6mmx.c
raid6recov.c
raid6sse1.c
raid6sse2.c
raid6x86.h
raid10.c [PATCH] md: convert 'faulty' and 'in_sync' fields to bits in 'flags' field 2005-11-09 07:56:38 -08:00
unroll.pl
xor.c