NeilBrown
8e8e2518fc
md: Close race when setting 'action' to 'idle'.
...
Checking ->sync_thread without holding the mddev_lock()
isn't really safe, even after flushing the workqueue which
ensures md_start_sync() has been run.
While this code is waiting for the lock, md_check_recovery could reap
the thread itself, and then start another thread (e.g. recovery might
finish, then reshape starts). When this thread gets the lock
md_start_sync() hasn't run so it doesn't get reaped, but
MD_RECOVERY_RUNNING gets cleared. This allows two threads to start
which leads to confusion.
So don't both if MD_RECOVERY_RUNNING isn't set, but if it is do
the flush and the test and the reap all under the mddev_lock to
avoid any race with md_check_recovery.
Signed-off-by: NeilBrown <neilb@suse.de>
Fixes: 6791875e2e ("md: make reconfig_mutex optional for writes to md sysfs files.")
Cc: stable@vger.kernel.org (v4.0+)
2015-06-12 20:16:26 +10:00
..
bcache
persistent-data
- Significant dm-crypt CPU scalability performance improvements thanks
2015-02-21 13:28:45 -08:00
bitmap.c
md/bitmap: remove rcu annotation from pointer arithmetic.
2015-05-21 09:14:41 +10:00
bitmap.h
md-cluster: re-add capabilities
2015-04-22 07:59:39 +10:00
dm-bio-prison.c
dm-bio-prison.h
dm-bio-record.h
dm-bufio.c
dm bufio: fix time comparison to use time_after_eq()
2015-02-09 13:06:48 -05:00
dm-bufio.h
dm-builtin.c
dm-cache-block-types.h
dm-cache-metadata.c
dm-cache-metadata.h
dm-cache-policy-cleaner.c
dm-cache-policy-internal.h
dm-cache-policy-mq.c
dm cache policy mq: try not to writeback data that changed in the last second
2015-03-31 12:03:48 -04:00
dm-cache-policy.c
dm-cache-policy.h
dm-cache-target.c
- Most significant change this cycle is request-based DM now supports
2015-02-12 16:36:31 -08:00
dm-crypt.c
Revert "dm crypt: fix deadlock when async crypto algorithm returns -EBUSY"
2015-05-05 12:16:43 -04:00
dm-delay.c
dm delay: use msecs_to_jiffies for time conversion
2015-04-15 12:10:21 -04:00
dm-era-target.c
dm-exception-store.c
dm-exception-store.h
dm-flakey.c
dm-io.c
dm io: deal with wandering queue limits when handling REQ_DISCARD and REQ_WRITE_SAME
2015-02-27 14:53:32 -05:00
dm-ioctl.c
dm: only initialize the request_queue once
2015-04-30 10:25:21 -04:00
dm-kcopyd.c
dm-linear.c
dm-log-userspace-base.c
dm log userspace base: fix compile warning
2015-04-15 12:10:20 -04:00
dm-log-userspace-transfer.c
dm log userspace transfer: match wait_for_completion_timeout return type
2015-04-15 12:10:20 -04:00
dm-log-userspace-transfer.h
dm-log-writes.c
dm: add log writes target
2015-04-15 12:10:24 -04:00
dm-log.c
dm-mpath.c
dm mpath: fix leak of dm_mpath_io structure in blk-mq .queue_rq error path
2015-05-27 17:37:22 -04:00
dm-mpath.h
dm-path-selector.c
dm-path-selector.h
dm-queue-length.c
dm-raid.c
- Most significant change this cycle is request-based DM now supports
2015-02-12 16:36:31 -08:00
dm-raid1.c
dm mirror: do not degrade the mirror on discard error
2015-02-13 19:50:46 -05:00
dm-region-hash.c
dm-round-robin.c
dm-service-time.c
dm-snap-persistent.c
dm snapshot: remove unnecessary NULL checks before vfree() calls
2015-02-09 13:06:49 -05:00
dm-snap-transient.c
dm-snap.c
dm snapshot: suspend merging snapshot when doing exception handover
2015-02-27 14:53:16 -05:00
dm-stats.c
dm-stats.h
dm-stripe.c
dm-switch.c
dm-sysfs.c
dm: add 'use_blk_mq' module param and expose in per-device ro sysfs attr
2015-04-15 12:10:17 -04:00
dm-table.c
dm: fix reload failure of 0 path multipath mapping on blk-mq devices
2015-05-29 13:41:16 -04:00
dm-target.c
dm: allocate requests in target when stacking on blk-mq devices
2015-02-09 13:06:47 -05:00
dm-thin-metadata.c
dm thin metadata: remove unused dm_pool_get_data_block_size()
2015-02-09 13:06:49 -05:00
dm-thin-metadata.h
dm thin metadata: remove unused dm_pool_get_data_block_size()
2015-02-09 13:06:49 -05:00
dm-thin.c
dm thin: fix to consistently zero-fill reads to unprovisioned blocks
2015-02-27 09:59:12 -05:00
dm-uevent.c
dm-uevent.h
dm-verity.c
dm verity: add error handling modes for corrupted blocks
2015-04-15 12:10:22 -04:00
dm-zero.c
dm.c
dm: fix casting bug in dm_merge_bvec()
2015-05-29 13:41:16 -04:00
dm.h
dm: add 'use_blk_mq' module param and expose in per-device ro sysfs attr
2015-04-15 12:10:17 -04:00
faulty.c
md: rename ->stop to ->free
2015-02-04 08:35:52 +11:00
Kconfig
md updates for 4.1
2015-04-24 09:28:01 -07:00
linear.c
md: rename ->stop to ->free
2015-02-04 08:35:52 +11:00
linear.h
Makefile
md updates for 4.1
2015-04-24 09:28:01 -07:00
md-cluster.c
md-cluster: re-add capabilities
2015-04-22 07:59:39 +10:00
md-cluster.h
md-cluster: re-add capabilities
2015-04-22 07:59:39 +10:00
md.c
md: Close race when setting 'action' to 'idle'.
2015-06-12 20:16:26 +10:00
md.h
md: remove 'go_faster' option from ->sync_request()
2015-04-22 08:00:40 +10:00
multipath.c
md: rename ->stop to ->free
2015-02-04 08:35:52 +11:00
multipath.h
raid0.c
md/raid0: fix restore to sector variable in raid0_make_request
2015-05-21 09:14:25 +10:00
raid0.h
raid1.c
md: remove 'go_faster' option from ->sync_request()
2015-04-22 08:00:40 +10:00
raid1.h
md: make ->congested robust against personality changes.
2015-02-04 08:35:52 +11:00
raid5.c
md/raid5: break stripe-batches when the array has failed.
2015-05-28 11:48:59 +10:00
raid5.h
md/raid5: be more selective about distributing flags across batch.
2015-05-28 11:40:01 +10:00
raid10.c
md: remove 'go_faster' option from ->sync_request()
2015-04-22 08:00:40 +10:00
raid10.h
md: make ->congested robust against personality changes.
2015-02-04 08:35:52 +11:00