Syncthing prevents Linux suspend

Issue and context

I have my laptop’s lid close set to suspend, but syncthing is listed as refusing to sleep by the kernel.

I have a synced folder on an external HDD, which is mounted as follows via /etc/fstab:

UUID=129e96dd-34ad-4dfd-b163-XXXXXXXXXXXX /media/backup   btrfs   user,noauto,nofail,subvol=@,lazytime,compress=zlib,x-systemd.automount

I see:

Feb 19 21:44:20 svelte systemd-logind[650]: Lid closed.
Feb 19 21:44:20 svelte systemd-logind[650]: Suspending...
Feb 19 21:44:20 svelte NetworkManager[647]: <info>  [1550573060.2945] manager: sleep: sleep requested (sleeping: no  enabled: yes)
Feb 19 21:44:20 svelte NetworkManager[647]: <info>  [1550573060.3010] manager: NetworkManager state is now ASLEEP
Feb 19 21:44:20 svelte systemd[1]: Starting TLP suspend/resume...
Feb 19 21:44:20 svelte wpa_supplicant[738]: wlp2s0: CTRL-EVENT-SIGNAL-CHANGE above=1 signal=-56 noise=9999 txrate=144400
Feb 19 21:44:21 svelte systemd[1]: Started TLP suspend/resume.
Feb 19 21:44:21 svelte kernel: audit: type=1130 audit(1550573061.130:482): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=tlp-sleep comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
Feb 19 21:44:21 svelte audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=tlp-sleep comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
Feb 19 21:44:21 svelte systemd[1]: Reached target Sleep.
Feb 19 21:44:21 svelte systemd[1]: Starting Suspend...
Feb 19 21:44:21 svelte systemd-sleep[4990]: Suspending system...
Feb 19 21:44:21 svelte kernel: PM: suspend entry (deep)
Feb 19 21:44:22 svelte kernel: PM: Syncing filesystems ... done.
Feb 19 21:44:42 svelte kernel: Freezing user space processes ...
Feb 19 21:44:42 svelte kernel: Freezing of tasks failed after 20.006 seconds (1 tasks refusing to freeze, wq_busy=0):
Feb 19 21:44:42 svelte kernel: syncthing       D    0  3974   3960 0x800003a4
Feb 19 21:44:42 svelte kernel: Call Trace:
Feb 19 21:44:42 svelte kernel:  ? __schedule+0x29b/0x8b0
Feb 19 21:44:42 svelte kernel:  ? preempt_count_add+0x79/0xb0
Feb 19 21:44:42 svelte kernel:  schedule+0x32/0x90
Feb 19 21:44:42 svelte kernel:  autofs_wait+0x32a/0x7ba
Feb 19 21:44:42 svelte kernel:  ? wait_woken+0x80/0x80
Feb 19 21:44:42 svelte kernel:  ? autofs_mount_wait+0x56/0xe0
Feb 19 21:44:42 svelte kernel:  autofs_mount_wait+0x56/0xe0
Feb 19 21:44:42 svelte kernel:  autofs_d_automount+0xeb/0x200
Feb 19 21:44:42 svelte kernel:  follow_managed+0x187/0x300
Feb 19 21:44:42 svelte kernel:  lookup_fast+0x136/0x2f0
Feb 19 21:44:42 svelte kernel:  ? __switch_to_xtra+0x42/0x5d0
Feb 19 21:44:42 svelte kernel:  walk_component+0x48/0x2d0
Feb 19 21:44:42 svelte kernel:  link_path_walk.part.11+0x1b6/0x5a0
Feb 19 21:44:42 svelte kernel:  path_openat+0x9d/0x14e0
Feb 19 21:44:42 svelte kernel:  ? ___preempt_schedule+0x16/0x18
Feb 19 21:44:42 svelte kernel:  ? seccomp_run_filters+0x5c/0x150
Feb 19 21:44:42 svelte kernel:  do_filp_open+0x93/0x100
Feb 19 21:44:42 svelte kernel:  ? __audit_syscall_exit+0x22a/0x290
Feb 19 21:44:42 svelte kernel:  ? __check_object_size+0xc1/0x175
Feb 19 21:44:42 svelte kernel:  ? _raw_spin_unlock+0x16/0x30
Feb 19 21:44:42 svelte kernel:  do_sys_open+0x186/0x210
Feb 19 21:44:42 svelte kernel:  do_syscall_64+0x65/0x180
Feb 19 21:44:42 svelte kernel:  entry_SYSCALL_64_after_hwframe+0x44/0xa9
Feb 19 21:44:42 svelte kernel: RIP: 0033:0x4af4ba
Feb 19 21:44:42 svelte kernel: Code: Bad RIP value.
Feb 19 21:44:42 svelte kernel: RSP: 002b:000000c00029f848 EFLAGS: 00000212 ORIG_RAX: 0000000000000101
Feb 19 21:44:42 svelte kernel: RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00000000004af4ba
Feb 19 21:44:42 svelte kernel: RDX: 0000000000080000 RSI: 000000c0000d01c0 RDI: ffffffffffffff9c
Feb 19 21:44:42 svelte kernel: RBP: 000000c00029f8c0 R08: 0000000000000000 R09: 0000000000000000
Feb 19 21:44:42 svelte kernel: R10: 0000000000000000 R11: 0000000000000212 R12: ffffffffffffffff
Feb 19 21:44:42 svelte kernel: R13: 0000000000000008 R14: 0000000000000007 R15: 0000000000000080
Feb 19 21:44:42 svelte kernel: OOM killer enabled.
Feb 19 21:44:42 svelte kernel: Restarting tasks ... done.
Feb 19 21:44:42 svelte systemd[1]: dev-disk-by\x2duuid-129e96dd\x2d34ad\x2d4dfd\x2db163\x2d882fd1fdd2e5.device: Job dev-disk-by\x2duuid-129e96dd\x2d34ad\x2d4dfd\x2db163\x2d882fd1fdd2e5.device/start timed out.
Feb 19 21:44:42 svelte rtkit-daemon[962]: The canary thread is apparently starving. Taking action.
Feb 19 21:44:42 svelte systemd[1]: Timed out waiting for device dev-disk-by\x2duuid-129e96dd\x2d34ad\x2d4dfd\x2db163\x2d882fd1fdd2e5.device.
Feb 19 21:44:42 svelte rtkit-daemon[962]: Demoting known real-time threads.
Feb 19 21:44:42 svelte systemd[1]: Dependency failed for /media/backup.
Feb 19 21:44:42 svelte rtkit-daemon[962]: Successfully demoted thread 975 of process 961 (/usr/bin/pulseaudio).
Feb 19 21:44:42 svelte systemd[1]: media-backup.mount: Job media-backup.mount/start failed with result 'dependency'.
Feb 19 21:44:42 svelte rtkit-daemon[962]: Successfully demoted thread 974 of process 961 (/usr/bin/pulseaudio).
Feb 19 21:44:42 svelte systemd[1]: dev-disk-by\x2duuid-129e96dd\x2d34ad\x2d4dfd\x2db163\x2d882fd1fdd2e5.device: Job dev-disk-by\x2duuid-129e96dd\x2d34ad\x2d4dfd\x2db163\x2d882fd1fdd2e5.device/start failed with result 'timeout'.
Feb 19 21:44:42 svelte rtkit-daemon[962]: Successfully demoted thread 961 of process 961 (/usr/bin/pulseaudio).
Feb 19 21:44:42 svelte systemd-logind[650]: Lid opened.
Feb 19 21:44:42 svelte rtkit-daemon[962]: Demoted 3 threads.
Feb 19 21:44:42 svelte systemd[1]: media-backup.automount: Got automount request for /media/backup, triggered by 3974 (syncthing)
Feb 19 21:44:42 svelte kernel: PM: suspend exit

Version Information

% syncthing --version
syncthing v1.0.0 "Erbium Earthworm" (go1.11.4 linux-amd64) builduser@svetlemodry 2019-01-01 09:37:38 UTC [noupgrade]
% uname -a
Linux svelte 4.19.20-1-MANJARO #1 SMP PREEMPT Wed Feb 6 21:33:34 UTC 2019 x86_64 GNU/Linux

Prior art

Question

How do I suspend with a syncthing folder on an automounted external HDD?

You can either not use automount or disable notify.

Do you mean inotify or some other feature?

Disable file watches in syncthing

Maybe I am slow, but I can’t follow the conclusion that this has anything to do with filesystem notifications/inotify. From the logs to me it looks like syncthing can’t be stopped, because it is doing some disk IO on an auto-mounted drive that doesn’t return. Is it clear why that is? If the drive isn’t available, shouldn’t it return an error instead of blocking? Where does filesystem watching come in?

The linked github issue is about fuse, that doesn’t seem related. The frequent automount thread was about syncthing-inotify, that doesn’t apply anymore today (unless you still use it, which I don’t assume you do): The filesystem watching is disabled when an error occurs for the folder (e.g. no folder marker aka not mounted).

I linked to the wrong GitHub issue above.

The one I raised initially is here.

In the above log example, the external HDD was not mounted.

I added x-systemd.device-timeout=200ms to the /etc/fstab line and all seems good for now.

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.