diff --git a/src/shutdown/detach-dm.c b/src/shutdown/detach-dm.c index bfb591ede5..71be74377d 100644 --- a/src/shutdown/detach-dm.c +++ b/src/shutdown/detach-dm.c @@ -121,15 +121,18 @@ static int delete_dm(DeviceMapper *m) { static int dm_points_list_detach(DeviceMapper **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(device_mapper, 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 DM %s that backs the OS itself, skipping.", m->path); n_failed ++; continue; }