aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/raid1.c
diff options
context:
space:
mode:
authorArtur Paszkiewicz <artur.paszkiewicz@intel.com>2017-05-08 05:56:55 -0400
committerShaohua Li <shli@fb.com>2017-05-08 13:32:59 -0400
commit2214c260c72b0bd94e6c1c19bf451686212025d3 (patch)
tree829a3494857d6bd61c38171a39e2e207de585e38 /drivers/md/raid1.c
parent3d05f3aed5d721c2c77d20288c29ab26c6193ed5 (diff)
md: don't return -EAGAIN in md_allow_write for external metadata arrays
This essentially reverts commit b5470dc5fc18 ("md: resolve external metadata handling deadlock in md_allow_write") with some adjustments. Since commit 6791875e2e53 ("md: make reconfig_mutex optional for writes to md sysfs files.") changing array_state to 'active' does not use mddev_lock() and will not cause a deadlock with md_allow_write(). This revert simplifies userspace tools that write to sysfs attributes like "stripe_cache_size" or "consistency_policy" because it removes the need for special handling for external metadata arrays, checking for EAGAIN and retrying the write. Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com> Signed-off-by: Shaohua Li <shli@fb.com>
Diffstat (limited to 'drivers/md/raid1.c')
-rw-r--r--drivers/md/raid1.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index 7ed59351fe97..7c1f73398800 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -3197,7 +3197,7 @@ static int raid1_reshape(struct mddev *mddev)
3197 struct r1conf *conf = mddev->private; 3197 struct r1conf *conf = mddev->private;
3198 int cnt, raid_disks; 3198 int cnt, raid_disks;
3199 unsigned long flags; 3199 unsigned long flags;
3200 int d, d2, err; 3200 int d, d2;
3201 3201
3202 /* Cannot change chunk_size, layout, or level */ 3202 /* Cannot change chunk_size, layout, or level */
3203 if (mddev->chunk_sectors != mddev->new_chunk_sectors || 3203 if (mddev->chunk_sectors != mddev->new_chunk_sectors ||
@@ -3209,11 +3209,8 @@ static int raid1_reshape(struct mddev *mddev)
3209 return -EINVAL; 3209 return -EINVAL;
3210 } 3210 }
3211 3211
3212 if (!mddev_is_clustered(mddev)) { 3212 if (!mddev_is_clustered(mddev))
3213 err = md_allow_write(mddev); 3213 md_allow_write(mddev);
3214 if (err)
3215 return err;
3216 }
3217 3214
3218 raid_disks = mddev->raid_disks + mddev->delta_disks; 3215 raid_disks = mddev->raid_disks + mddev->delta_disks;
3219 3216