diff options
author | michaelolbrich <m.olbrich@pengutronix.de> | 2016-06-06 21:59:51 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2016-06-06 21:59:51 +0200 |
commit | 53203e5f8f9a79d0ad774e29ea165b471e64619f (patch) | |
tree | 94e5576db6c1f86ad769dcf183526300aab9e382 /src/core/mount.c | |
parent | b2bb19bbda8f5ab3ab497165bc52a0ef952348c4 (diff) |
mount: make sure got into MOUNT_DEAD state after a successful umount (#3444)
Without this code the following can happen:
1. Open a file to keep a mount busy
2. Try to stop the corresponding mount unit with systemctl
-> umount fails and the failure is remembered in mount->result
3. Close the file and umount the filesystem manually
-> mount_dispatch_io() calls "mount_enter_dead(mount, MOUNT_SUCCESS)"
-> Old error in mount->result is reused and the mount unit enters a
failed state
Clear the old error result when 'mountinfo' reports a successful umount to
fix this.
Diffstat (limited to 'src/core/mount.c')
-rw-r--r-- | src/core/mount.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/core/mount.c b/src/core/mount.c index 665a60bb55..8290ac859d 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -1706,6 +1706,7 @@ static int mount_dispatch_io(sd_event_source *source, int fd, uint32_t revents, /* This has just been unmounted by * somebody else, follow the state * change. */ + mount->result = MOUNT_SUCCESS; mount_enter_dead(mount, MOUNT_SUCCESS); break; |