From: NeilBrown Date: Wed, 30 Dec 2009 01:08:50 +0000 (+1100) Subject: md: fix small irregularity with start_ro module parameter X-Git-Tag: firefly_0821_release~11625^2~197 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=2928b68f6294139ffbd2138440ce08efeaf23d15;p=firefly-linux-kernel-4.4.55.git md: fix small irregularity with start_ro module parameter commit 0f9552b5dc4fe10da37fa3f4a4ca185d90fa41c9 upstream. The start_ro modules parameter can be used to force arrays to be started in 'auto-readonly' in which they are read-only until the first write. This ensures that no resync/recovery happens until something else writes to the device. This is important for resume-from-disk off an md array. However if an array is started 'readonly' (by writing 'readonly' to the 'array_state' sysfs attribute) we want it to be really 'readonly', not 'auto-readonly'. So strengthen the condition to only set auto-readonly if the array is not already read-only. Signed-off-by: NeilBrown Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/md/md.c b/drivers/md/md.c index c6a6685b0806..08f7471d0150 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -4173,7 +4173,7 @@ static int do_md_run(mddev_t * mddev) mddev->barriers_work = 1; mddev->ok_start_degraded = start_dirty_degraded; - if (start_readonly) + if (start_readonly && mddev->ro == 0) mddev->ro = 2; /* read-only, but switch on first write */ err = mddev->pers->run(mddev);