WSL2-Linux-Kernel/drivers/md
NeilBrown b357f04a67 md: fix up plugging (again).
The value returned by "mddev_check_plug" is only valid until the
next 'schedule' as that will unplug things.  This could happen at any
call to mempool_alloc.
So just calling mddev_check_plug at the start doesn't really make
sense.

So call it just before, or just after, queuing things for the thread.
As the action that happens at unplug is to wake the thread, this makes
lots of sense.
If we cannot add a plug (which requires a small GFP_ATOMIC alloc) we
wake thread immediately.

RAID5 is a bit different.  Requests are queued for the thread and the
thread is woken by release_stripe.  So we don't need to wake the
thread on failure.
However the thread doesn't perform certain actions when there is any
active plug, so it is important to install a plug before waking the
thread.  So for RAID5 we install the plug *before* queuing the request
and waking the thread.

Without this patch it is possible for raid1 or raid10 to queue a
request without then waking the thread, resulting in the array locking
up.

Also change raid10 to only flush_pending_write when there are not
active plugs, just like raid1.

This patch is suitable for 3.0 or later.  I plan to submit it to
-stable, but I'll like to let it spend a few weeks in mainline
first to be sure it is completely safe.

Signed-off-by: NeilBrown <neilb@suse.de>
2012-07-03 17:45:31 +10:00
..
persistent-data dm thin: provide userspace access to pool metadata 2012-06-03 00:30:01 +01:00
Kconfig dm: add verity target 2012-03-28 18:43:38 +01:00
Makefile dm: add verity target 2012-03-28 18:43:38 +01:00
bitmap.c md/bitmap: record the space available for the bitmap in the superblock. 2012-05-22 13:55:34 +10:00
bitmap.h md/bitmap: record the space available for the bitmap in the superblock. 2012-05-22 13:55:34 +10:00
dm-bio-record.h
dm-bufio.c dm bufio: prefetch 2012-03-28 18:41:29 +01:00
dm-bufio.h dm bufio: prefetch 2012-03-28 18:41:29 +01:00
dm-crypt.c dm: reject trailing characters in sccanf input 2012-03-28 18:41:26 +01:00
dm-delay.c dm: reject trailing characters in sccanf input 2012-03-28 18:41:26 +01:00
dm-exception-store.c dm exception store: fix init error path 2012-03-28 18:41:22 +01:00
dm-exception-store.h
dm-flakey.c dm: reject trailing characters in sccanf input 2012-03-28 18:41:26 +01:00
dm-io.c
dm-ioctl.c dm: reject trailing characters in sccanf input 2012-03-28 18:41:26 +01:00
dm-kcopyd.c
dm-linear.c dm: reject trailing characters in sccanf input 2012-03-28 18:41:26 +01:00
dm-log-userspace-base.c
dm-log-userspace-transfer.c connector/userns: replace netlink uses of cap_raised() with capable() 2012-05-10 23:21:39 -04:00
dm-log-userspace-transfer.h
dm-log.c dm: reject trailing characters in sccanf input 2012-03-28 18:41:26 +01:00
dm-mpath.c dm mpath: allow ioctls to trigger pg init 2012-06-03 00:29:58 +01:00
dm-mpath.h
dm-path-selector.c
dm-path-selector.h
dm-queue-length.c dm: reject trailing characters in sccanf input 2012-03-28 18:41:26 +01:00
dm-raid.c DM RAID: Use md_error() in place of simply setting Faulty bit 2012-05-22 13:55:31 +10:00
dm-raid1.c dm: reject trailing characters in sccanf input 2012-03-28 18:41:26 +01:00
dm-region-hash.c
dm-round-robin.c dm: reject trailing characters in sccanf input 2012-03-28 18:41:26 +01:00
dm-service-time.c dm: reject trailing characters in sccanf input 2012-03-28 18:41:26 +01:00
dm-snap-persistent.c
dm-snap-transient.c
dm-snap.c
dm-stripe.c dm: reject trailing characters in sccanf input 2012-03-28 18:41:26 +01:00
dm-sysfs.c
dm-table.c dm: reject trailing characters in sccanf input 2012-03-28 18:41:26 +01:00
dm-target.c
dm-thin-metadata.c dm thin: provide userspace access to pool metadata 2012-06-03 00:30:01 +01:00
dm-thin-metadata.h dm thin: provide userspace access to pool metadata 2012-06-03 00:30:01 +01:00
dm-thin.c dm thin: provide userspace access to pool metadata 2012-06-03 00:30:01 +01:00
dm-uevent.c
dm-uevent.h
dm-verity.c dm: add verity target 2012-03-28 18:43:38 +01:00
dm-zero.c
dm.c dm: clear bi_end_io on remapping failure 2012-03-28 18:41:25 +01:00
dm.h
faulty.c md: tidy up rdev_for_each usage. 2012-03-19 12:46:39 +11:00
linear.c md/linear: If md_integrity_register() fails, linear_run() must free the mem. 2012-04-02 09:48:37 +10:00
linear.h
md.c md: support re-add of recovering devices. 2012-07-03 15:59:06 +10:00
md.h md/bitmap: add new 'space' attribute for bitmaps. 2012-05-22 13:55:07 +10:00
multipath.c md: make 'name' arg to md_register_thread non-optional. 2012-07-03 15:56:52 +10:00
multipath.h
raid0.c md: Avoid OOPS when reshaping raid1 to raid0 2012-04-03 15:37:26 +10:00
raid0.h md: add proper merge_bvec handling to RAID0 and Linear. 2012-03-19 12:46:39 +11:00
raid1.c md: fix up plugging (again). 2012-07-03 17:45:31 +10:00
raid1.h
raid5.c md: fix up plugging (again). 2012-07-03 17:45:31 +10:00
raid5.h raid5: support sync request 2012-05-22 13:55:05 +10:00
raid10.c md: fix up plugging (again). 2012-07-03 17:45:31 +10:00
raid10.h md/raid10: add reshape support 2012-05-22 13:53:47 +10:00