static int md_points_list_detach(RaidDevice **head, bool *changed, bool last_try) {
int n_failed = 0, r;
- dev_t rootdev = 0;
+ dev_t rootdev = 0, usrdev = 0;
assert(head);
assert(changed);
(void) get_block_device("/", &rootdev);
+ (void) get_block_device("/usr", &usrdev);
LIST_FOREACH(raid_device, m, *head) {
- if (major(rootdev) != 0 && rootdev == m->devnum) {
+ if ((major(rootdev) != 0 && rootdev == m->devnum) ||
+ (major(usrdev) != 0 && usrdev == m->devnum)) {
+ log_debug("Not detaching MD %s that backs the OS itself, skipping.", m->path);
n_failed ++;
continue;
}