| From 5383ef3a929a1366e2ced45cd6d74be7aa2a2281 Mon Sep 17 00:00:00 2001 |
| From: Joe Thornber <ejt@redhat.com> |
| Date: Wed, 4 Dec 2013 16:30:01 -0500 |
| Subject: dm thin: re-establish read-only state when switching to fail mode |
| |
| From: Joe Thornber <ejt@redhat.com> |
| |
| commit 5383ef3a929a1366e2ced45cd6d74be7aa2a2281 upstream. |
| |
| If the thin-pool transitioned to fail mode and the thin-pool's table |
| were reloaded for some reason: the new table's default pool mode would |
| be read-write, though it will transition to fail mode during resume. |
| |
| When the pool mode transitions directly from PM_WRITE to PM_FAIL we need |
| to re-establish the intermediate read-only state in both the metadata |
| and persistent-data block manager (as is usually done with the normal |
| pool mode transition sequence: PM_WRITE -> PM_READ_ONLY -> PM_FAIL). |
| |
| Signed-off-by: Joe Thornber <ejt@redhat.com> |
| Signed-off-by: Mike Snitzer <snitzer@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/md/dm-thin.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/drivers/md/dm-thin.c |
| +++ b/drivers/md/dm-thin.c |
| @@ -1400,6 +1400,7 @@ static void set_pool_mode(struct pool *p |
| case PM_FAIL: |
| DMERR("%s: switching pool to failure mode", |
| dm_device_name(pool->pool_md)); |
| + dm_pool_metadata_read_only(pool->pmd); |
| pool->process_bio = process_bio_fail; |
| pool->process_discard = process_bio_fail; |
| pool->process_prepared_mapping = process_prepared_mapping_fail; |