aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-05-13 11:11:48 +0900
committerLinus Torvalds <torvalds@linux-foundation.org>2014-05-13 11:11:48 +0900
commit2ddb5998d0538bc720288486af3af243af5bac0a (patch)
tree88d6f446e6c4264ac3af8c8eb6dd79f7f5255575
parent200d963bf49c3399a5f044d53b5b4a8f133a776c (diff)
parent0f62fb220aa4ebabe8547d3a9ce4a16d3c045f21 (diff)
Merge tag 'md/3.15-fixes' of git://neil.brown.name/md
Pull md bugfixes from Neil Brown: "Two bugfixes for md in 3.15 Both tagged for -stable" * tag 'md/3.15-fixes' of git://neil.brown.name/md: md: avoid possible spinning md thread at shutdown. md/raid10: call wait_barrier() for each request submitted.
-rw-r--r--drivers/md/md.c3
-rw-r--r--drivers/md/raid10.c13
2 files changed, 9 insertions, 7 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 8fda38d23e3..237b7e0ddc7 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -8516,7 +8516,8 @@ static int md_notify_reboot(struct notifier_block *this,
if (mddev_trylock(mddev)) {
if (mddev->pers)
__md_stop_writes(mddev);
- mddev->safemode = 2;
+ if (mddev->persistent)
+ mddev->safemode = 2;
mddev_unlock(mddev);
}
need_delay = 1;
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index 33fc408e5ea..cb882aae9e2 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -1172,6 +1172,13 @@ static void __make_request(struct mddev *mddev, struct bio *bio)
int max_sectors;
int sectors;
+ /*
+ * Register the new request and wait if the reconstruction
+ * thread has put up a bar for new requests.
+ * Continue immediately if no resync is active currently.
+ */
+ wait_barrier(conf);
+
sectors = bio_sectors(bio);
while (test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) &&
bio->bi_iter.bi_sector < conf->reshape_progress &&
@@ -1552,12 +1559,6 @@ static void make_request(struct mddev *mddev, struct bio *bio)
md_write_start(mddev, bio);
- /*
- * Register the new request and wait if the reconstruction
- * thread has put up a bar for new requests.
- * Continue immediately if no resync is active currently.
- */
- wait_barrier(conf);
do {