Commit d87f064f authored by NeilBrown's avatar NeilBrown

md: never update metadata when array is read-only.

Normally we don't even try to update the metadata if
the array is read-only.  However future patches
will increase the number of things that can happen on a read-only
array, so it is safest to explicitly disable this.

Every time that mddev->ro is set to 0, either
 - md_update_sb will be called again (at least if MD_CHANGE_DEVS
   is set) or
 - the mddev->thread is scheduled, which will also run
   md_update_sb if needed.

So this is safe: if the array ever become read-write the
metadata will be updated.
Signed-off-by: default avatarNeilBrown <neilb@suse.de>
parent 824282ca
...@@ -2411,6 +2411,11 @@ static void md_update_sb(struct mddev * mddev, int force_change) ...@@ -2411,6 +2411,11 @@ static void md_update_sb(struct mddev * mddev, int force_change)
int nospares = 0; int nospares = 0;
int any_badblocks_changed = 0; int any_badblocks_changed = 0;
if (mddev->ro) {
if (force_change)
set_bit(MD_CHANGE_DEVS, &mddev->flags);
return;
}
repeat: repeat:
/* First make sure individual recovery_offsets are correct */ /* First make sure individual recovery_offsets are correct */
rdev_for_each(rdev, mddev) { rdev_for_each(rdev, mddev) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment