mirror of
https://github.com/systemd/systemd.git
synced 2024-12-29 03:53:38 +08:00
umount: umount, until all umounts failed
This commit is contained in:
parent
0415a10436
commit
6f7f51f793
10
src/umount.c
10
src/umount.c
@ -552,6 +552,8 @@ static int dm_points_list_detach(MountPoint **head, bool *changed) {
|
||||
|
||||
int umount_all(bool *changed) {
|
||||
int r;
|
||||
bool umount_changed;
|
||||
|
||||
LIST_HEAD(MountPoint, mp_list_head);
|
||||
|
||||
LIST_HEAD_INIT(MountPoint, mp_list_head);
|
||||
@ -560,7 +562,13 @@ int umount_all(bool *changed) {
|
||||
if (r < 0)
|
||||
goto end;
|
||||
|
||||
r = mount_points_list_umount(&mp_list_head, changed);
|
||||
/* retry umount, until nothing can be umounted anymore */
|
||||
do {
|
||||
umount_changed = false;
|
||||
r = mount_points_list_umount(&mp_list_head, &umount_changed);
|
||||
if (umount_changed)
|
||||
*changed = true;
|
||||
} while(umount_changed);
|
||||
if (r <= 0)
|
||||
goto end;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user