| From 0f9552b5dc4fe10da37fa3f4a4ca185d90fa41c9 Mon Sep 17 00:00:00 2001 |
| From: NeilBrown <neilb@suse.de> |
| Date: Wed, 30 Dec 2009 12:08:50 +1100 |
| Subject: md: fix small irregularity with start_ro module parameter |
| |
| From: NeilBrown <neilb@suse.de> |
| |
| 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 <neilb@suse.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/md/md.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- 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); |