mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-12-27 03:21:32 +03:00
automount: don't lstat(2) upon umount request (#6086)
When umounting an NFS filesystem, it is not safe to lstat(2) the mountpoint at all as that can block indefinitely if the NFS server is down. umount() will not block, but lstat() will. This patch therefore removes the call to lstat(2) and defers the handling of any error to the child process which will issue the umount call.
This commit is contained in:
parent
0004f698df
commit
9e7bc4dc3a
@ -970,7 +970,6 @@ static int automount_dispatch_io(sd_event_source *s, int fd, uint32_t events, vo
|
||||
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
|
||||
union autofs_v5_packet_union packet;
|
||||
Automount *a = AUTOMOUNT(userdata);
|
||||
struct stat st;
|
||||
Unit *trigger;
|
||||
int r;
|
||||
|
||||
@ -1032,18 +1031,6 @@ static int automount_dispatch_io(sd_event_source *s, int fd, uint32_t events, vo
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/* Before we do anything, let's see if somebody is playing games with us? */
|
||||
if (lstat(a->where, &st) < 0) {
|
||||
log_unit_warning_errno(UNIT(a), errno, "Failed to stat automount point: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (!S_ISDIR(st.st_mode) || st.st_dev == a->dev_id) {
|
||||
log_unit_info(UNIT(a), "Automount point already unmounted?");
|
||||
automount_send_ready(a, a->expire_tokens, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
trigger = UNIT_TRIGGER(UNIT(a));
|
||||
if (!trigger) {
|
||||
log_unit_error(UNIT(a), "Unit to trigger vanished.");
|
||||
|
Loading…
Reference in New Issue
Block a user