Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP2:GA
mdadm.5365
0241-Assemble-don-t-assemble-IMSM-array-without...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0241-Assemble-don-t-assemble-IMSM-array-without-OROM.patch of Package mdadm.5365
From 7eee461e91df702d8f588955b03e5bbb07e1f88d Mon Sep 17 00:00:00 2001 From: NeilBrown <neilb@suse.com> Date: Wed, 29 Jul 2015 14:38:37 +1000 Subject: [PATCH] Assemble: don't assemble IMSM array without OROM. References: bsc#939748 bsc#937363 If someone has an IMSM array, and disables RAID in the BIOS and uses the devices for some other purpose, then they really don't want mdadm to start syncing the array. So don't assemble if OROM doesn't confirm it is OK. There can still be problems for crash-dump not being able to find the OROM. Some explicit work-around might be needed for that rather than a more general workaround that can corrupt data. Signed-off-by: NeilBrown <neilb@suse.com> --- Assemble.c | 2 +- Incremental.c | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Assemble.c b/Assemble.c index 245e213..06e122d 100644 --- a/Assemble.c +++ b/Assemble.c @@ -1337,7 +1337,7 @@ try_again: mddev ? mddev : "further assembly"); content = &info; - if (st) + if (st && c->force) st->ignore_hw_compat = 1; num_devs = select_devices(devlist, ident, &st, &content, c, inargv, auto_assem); diff --git a/Incremental.c b/Incremental.c index c766ea0..8857619 100644 --- a/Incremental.c +++ b/Incremental.c @@ -130,8 +130,6 @@ int Incremental(struct mddev_dev *devlist, struct context *c, if (must_be_container(dfd)) { if (!st) st = super_by_fd(dfd, NULL); - if (st) - st->ignore_hw_compat = 1; if (st && st->ss->load_container) rv = st->ss->load_container(st, dfd, NULL); @@ -204,7 +202,8 @@ int Incremental(struct mddev_dev *devlist, struct context *c, NULL, c->verbose); goto out; } - st->ignore_hw_compat = 1; + st->ignore_hw_compat = 0; + if (st->ss->compare_super == NULL || st->ss->load_super(st, dfd, NULL)) { if (c->verbose >= 0) @@ -1123,6 +1122,7 @@ static int partition_try_spare(char *devname, int *dfdp, struct dev_policy *pol, if (st2 == NULL || st2->ss->load_super(st2, fd, NULL) < 0) goto next; + st2->ignore_hw_compat = 0; if (!st) { /* Check domain policy again, this time referring to metadata */ @@ -1349,8 +1349,7 @@ restart: struct supertype *st = super_by_fd(mdfd, NULL); int ret = 0; struct map_ent *map = NULL; - if (st) - st->ignore_hw_compat = 1; + if (st && st->ss->load_container) ret = st->ss->load_container(st, mdfd, NULL); close(mdfd); -- 2.16.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor