linux/drivers/md
NeilBrown 73d5c38a95 md: avoid races when stopping resync.
There has been a race in raid10 and raid1 for a long time
which has only recently started showing up due to a scheduler changed.

When a sync_read request finishes, as soon as reschedule_retry
is called, another thread can mark the resync request as having
completed, so md_do_sync can finish, ->stop can be called, and
->conf can be freed.  So using conf after reschedule_retry is not
safe.

Similarly, when finishing a sync_write, calling md_done_sync must be
the last thing we do, as it allows a chain of events which will free
conf and other data structures.

The first of these requires action in raid10.c
The second requires action in raid1.c and raid10.c

Cc: stable@kernel.org
Signed-off-by: NeilBrown <neilb@suse.de>
2009-02-25 13:18:47 +11:00
..
raid6test
.gitignore
Kconfig
Makefile dm snapshot: split out exception store implementations 2009-01-06 03:05:17 +00:00
bitmap.c md: use list_for_each_entry macro directly 2009-01-09 08:31:08 +11:00
dm-bio-list.h
dm-bio-record.h
dm-crypt.c dm: consolidate target deregistration error handling 2009-01-06 03:04:58 +00:00
dm-delay.c dm: consolidate target deregistration error handling 2009-01-06 03:04:58 +00:00
dm-exception-store.c dm snapshot: extend exception store functions 2009-01-06 03:05:19 +00:00
dm-exception-store.h dm snapshot: extend exception store functions 2009-01-06 03:05:19 +00:00
dm-io.c block: fix bad definition of BIO_RW_SYNC 2009-02-18 10:32:00 +01:00
dm-ioctl.c dm table: rework reference counting 2009-01-06 03:05:10 +00:00
dm-kcopyd.c block: fix bad definition of BIO_RW_SYNC 2009-02-18 10:32:00 +01:00
dm-linear.c dm: support barriers on simple devices 2009-01-06 03:05:09 +00:00
dm-log.c dm log: ensure log bitmap fits on log device 2009-01-06 03:05:02 +00:00
dm-mpath.c dm mpath: move trigger_event to system workqueue 2009-01-06 03:05:13 +00:00
dm-mpath.h
dm-path-selector.c dm: remove dm header from targets 2008-10-21 17:44:59 +01:00
dm-path-selector.h
dm-raid1.c dm log: move region_size validation 2009-01-06 03:05:01 +00:00
dm-region-hash.c dm raid1: separate region_hash interface part1 2008-10-21 17:45:06 +01: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: extend exception store functions 2009-01-06 03:05:19 +00:00
dm-snap-transient.c dm snapshot: extend exception store functions 2009-01-06 03:05:19 +00:00
dm-snap.c dm snapshot: extend exception store functions 2009-01-06 03:05:19 +00:00
dm-snap.h dm snapshot: extend exception store functions 2009-01-06 03:05:19 +00: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 table: rework reference counting 2009-01-06 03:05:10 +00:00
dm-target.c dm: consolidate target deregistration error handling 2009-01-06 03:04:58 +00: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 dm: add name and uuid to sysfs 2009-01-06 03:05:12 +00:00
dm.h dm: add name and uuid to sysfs 2009-01-06 03:05:12 +00:00
faulty.c md: use list_for_each_entry macro directly 2009-01-09 08:31:08 +11:00
linear.c md: Fix a bug in linear.c causing which_dev() to return the wrong device. 2009-02-06 15:10:52 +11:00
md.c block: fix bad definition of BIO_RW_SYNC 2009-02-18 10:32:00 +01:00
mktables.c
multipath.c md: use list_for_each_entry macro directly 2009-01-09 08:31:08 +11:00
raid0.c md: use list_for_each_entry macro directly 2009-01-09 08:31:08 +11:00
raid1.c md: avoid races when stopping resync. 2009-02-25 13:18:47 +11:00
raid5.c md: use list_for_each_entry macro directly 2009-01-09 08:31:08 +11:00
raid6.h
raid6algos.c
raid6altivec.uc
raid6int.uc
raid6mmx.c
raid6recov.c
raid6sse1.c
raid6sse2.c
raid6x86.h
raid10.c md: avoid races when stopping resync. 2009-02-25 13:18:47 +11:00
unroll.pl