android_kernel_xiaomi_sm8350/drivers/md
NeilBrown 5bf2959754 md: remove ability to explicit set an inactive array to 'clean'.
Being able to write 'clean' to an 'array_state' of an inactive array
to activate it in 'clean' mode is both unnecessary and inconvenient.

It is unnecessary because the same can be achieved by writing
'active'.  This activates and array, but it still remains 'clean'
until the first write.

It is inconvenient because writing 'clean' is more often used to
cause an 'active' array to revert to 'clean' mode (thus blocking
any writes until a 'write-pending' is promoted to 'active').

Allowing 'clean' to both activate an array and mark an active array as
clean can lead to races:  One program writes 'clean' to mark the
active array as clean at the same time as another program writes
'inactive' to deactivate (stop) and active array.  Depending on which
writes first, the array could be deactivated and immediately
reactivated which isn't what was desired.

So just disable the use of 'clean' to activate an array.

This avoids a race that can be triggered with mdadm-3.0 and external
metadata, so it suitable for -stable.

Reported-by: Rafal Marszewski <rafal.marszewski@intel.com>
Acked-by: Dan Williams <dan.j.williams@intel.com>
Cc: <stable@kernel.org>
Signed-off-by: NeilBrown <neilb@suse.de>
2009-05-07 12:50:57 +10:00
..
raid6test md/raid6: move raid6 data processing to raid6_pq.ko 2009-03-31 15:09:39 +11:00
.gitignore
bitmap.c md: fix some (more) errors with bitmaps on devices larger than 2TB. 2009-05-07 12:49:06 +10:00
bitmap.h md: move headers out of include/linux/raid/ 2009-03-31 14:27:03 +11:00
dm-bio-record.h dm: preserve bi_io_vec when resubmitting bios 2009-04-02 19:55:23 +01:00
dm-crypt.c dm crypt: use kzfree 2009-04-02 19:55:28 +01:00
dm-delay.c block: move bio list helpers into bio.h 2009-04-15 08:28:09 +02:00
dm-exception-store.c dm snapshot: move ctr parsing to exception store 2009-04-02 19:55:34 +01:00
dm-exception-store.h dm snapshot: move status to exception store 2009-04-02 19:55:35 +01:00
dm-io.c dm io: make sync_io uninterruptible 2009-04-02 19:55:24 +01:00
dm-ioctl.c dm: add integrity support 2009-04-09 00:27:12 +01:00
dm-kcopyd.c dm kcopyd: fix callback race 2009-04-09 00:27:17 +01:00
dm-linear.c dm: remove limited barrier support 2009-04-09 00:27:13 +01:00
dm-log.c dm log: remove struct dm_dirty_log_internal 2009-04-02 19:55:30 +01:00
dm-mpath.c block: move bio list helpers into bio.h 2009-04-15 08:28:09 +02:00
dm-mpath.h dm mpath: remove is_active from struct dm_path 2008-10-10 13:36:58 +01:00
dm-path-selector.c dm: path selector use module refcount directly 2009-04-02 19:55:27 +01:00
dm-path-selector.h
dm-raid1.c block: move bio list helpers into bio.h 2009-04-15 08:28:09 +02:00
dm-region-hash.c block: move bio list helpers into bio.h 2009-04-15 08:28:09 +02:00
dm-round-robin.c dm: remove dm header from targets 2008-10-21 17:44:59 +01:00
dm-snap-persistent.c dm snapshot: persistent fix dtr cleanup 2009-04-02 19:55:35 +01:00
dm-snap-transient.c dm snapshot: move status to exception store 2009-04-02 19:55:35 +01:00
dm-snap.c block: move bio list helpers into bio.h 2009-04-15 08:28:09 +02:00
dm-stripe.c dm: consolidate target deregistration error handling 2009-01-06 03:04:58 +00:00
dm-sysfs.c dm: add name and uuid to sysfs 2009-01-06 03:05:12 +00:00
dm-table.c dm: remove limited barrier support 2009-04-09 00:27:13 +01:00
dm-target.c dm target: remove struct tt_internal 2009-04-02 19:55:28 +01:00
dm-uevent.c
dm-uevent.h
dm-zero.c dm: consolidate target deregistration error handling 2009-01-06 03:04:58 +00:00
dm.c block: move bio list helpers into bio.h 2009-04-15 08:28:09 +02:00
dm.h dm: remove limited barrier support 2009-04-09 00:27:13 +01:00
faulty.c md: centralize ->array_sectors modifications 2009-03-31 14:59:03 +11:00
Kconfig md: remove CONFIG_MD_RAID_RESHAPE config option. 2009-03-31 15:27:05 +11:00
linear.c md: centralize ->array_sectors modifications 2009-03-31 14:59:03 +11:00
linear.h md: move lots of #include lines out of .h files and into .c 2009-03-31 14:33:13 +11:00
Makefile md/raid6: move raid6 data processing to raid6_pq.ko 2009-03-31 15:09:39 +11:00
md.c md: remove ability to explicit set an inactive array to 'clean'. 2009-05-07 12:50:57 +10:00
md.h md: tiny md.h cleanups 2009-04-14 12:01:53 +10:00
mktables.c md/raid6: move raid6 data processing to raid6_pq.ko 2009-03-31 15:09:39 +11:00
multipath.c md: centralize ->array_sectors modifications 2009-03-31 14:59:03 +11:00
multipath.h md: move lots of #include lines out of .h files and into .c 2009-03-31 14:33:13 +11:00
raid0.c md: 'array_size' sysfs attribute 2009-03-31 15:00:31 +11:00
raid0.h md: move lots of #include lines out of .h files and into .c 2009-03-31 14:33:13 +11:00
raid1.c block: move bio list helpers into bio.h 2009-04-15 08:28:09 +02:00
raid1.h md: move lots of #include lines out of .h files and into .c 2009-03-31 14:33:13 +11:00
raid5.c md: update sync_completed and reshape_position even more often. 2009-04-17 11:06:30 +10:00
raid5.h md/raid5 revise rules for when to update metadata during reshape 2009-03-31 15:28:40 +11:00
raid6algos.c md/raid6: move raid6 data processing to raid6_pq.ko 2009-03-31 15:09:39 +11:00
raid6altivec.uc md/raid6: move raid6 data processing to raid6_pq.ko 2009-03-31 15:09:39 +11:00
raid6int.uc md/raid6: move raid6 data processing to raid6_pq.ko 2009-03-31 15:09:39 +11:00
raid6mmx.c md/raid6: move raid6 data processing to raid6_pq.ko 2009-03-31 15:09:39 +11:00
raid6recov.c md/raid6: move raid6 data processing to raid6_pq.ko 2009-03-31 15:09:39 +11:00
raid6sse1.c md/raid6: move raid6 data processing to raid6_pq.ko 2009-03-31 15:09:39 +11:00
raid6sse2.c md/raid6: move raid6 data processing to raid6_pq.ko 2009-03-31 15:09:39 +11:00
raid6x86.h md: fix typo in FSF address 2009-03-31 14:57:37 +11:00
raid10.c md/raid10: don't clear bitmap during recovery if array will still be degraded. 2009-05-07 12:48:10 +10:00
raid10.h md: move lots of #include lines out of .h files and into .c 2009-03-31 14:33:13 +11:00
unroll.pl