md/raid5: suspend shouldn't affect read requests.
authorNeilBrown <neilb@suse.de>
Wed, 1 Jul 2009 03:15:35 +0000 (13:15 +1000)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 20 Jul 2009 03:38:52 +0000 (20:38 -0700)
commit a5c308d4d1659b1f4833b863394e3e24cdbdfc6e upstream.

md allows write to regions on an array to be suspended temporarily.
This allows user-space to participate is aspects of reshape.
In particular, data can be copied with not risk of a race.
We should not be blocking read requests though, so don't.

Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/md/raid5.c

index c0434e0b72ac784b875e8676537d8a8aad0f1975..1f98ea4b1345e432ce9f72961fb025480605ec89 100644 (file)
@@ -3703,7 +3703,8 @@ static int make_request(struct request_queue *q, struct bio * bi)
                        /* FIXME what if we get a false positive because these
                         * are being updated.
                         */
-                       if (logical_sector >= mddev->suspend_lo &&
+                       if (bio_data_dir(bi) == WRITE &&
+                           logical_sector >= mddev->suspend_lo &&
                            logical_sector < mddev->suspend_hi) {
                                release_stripe(sh);
                                schedule();