diff --git a/src/shutdown/detach-md.c b/src/shutdown/detach-md.c index d5188ea822..ae592f6f31 100644 --- a/src/shutdown/detach-md.c +++ b/src/shutdown/detach-md.c @@ -129,15 +129,18 @@ static int delete_md(RaidDevice *m) { 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; }