# fs: Improved responsiveness when watching paths on slow or unresponsive filesystems \(\#63410\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/7ea077c78b865d17854cee812bb775dbe64a925a)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: 7ea077c78b865d17854cee812bb775dbe64a925a

Requested commit: 7ea077c78b865d17854cee812bb775dbe64a925a

Commit: 7ea077c78b865d17854cee812bb775dbe64a925a

Tree: 9b85375837685285b9a9a9ef5ba8fc21e4287794

Author: Remco Smits

Committer: GitHub

## Message

````
fs: Improved responsiveness when watching paths on slow or unresponsive filesystems (#63410)

# Objective

When Zed watches a file or folder that doesn't exist yet, it retries
every couple of seconds. Two steps in that retry can be slow: asking the
filesystem whether it's case-sensitive (blocking sys call), and
registering the watcher itself (which reads the whole folder tree when
the watcher is recursive). If the system is slow to respond, those steps
can hang for a long time as you can see inside the following logs:

```
2026-08-23T11:42:56+02:00 INFO  [zed::reliability::hang_detection::logging] Background hang detected on Unknown:
Tasks(s) that ran too long
18.159457333s        - crates/fs/src/fs_watcher.rs:85:34

2026-08-23T11:42:56+02:00 INFO  [zed::reliability::hang_detection::logging] Background hang detected on Unknown:
Tasks(s) that ran too long
18.155837042s        - crates/fs/src/fs_watcher.rs:85:34

2026-08-23T11:42:56+02:00 INFO  [zed::reliability::hang_detection::logging] Background hang detected on Unknown:
Tasks(s) that ran too long
18.156099417s        - crates/fs/src/fs_watcher.rs:85:34

2026-08-23T11:42:56+02:00 INFO  [zed::reliability::hang_detection::logging] Background hang detected on Unknown:
Tasks(s) that ran too long
18.155881292s        - crates/fs/src/fs_watcher.rs:85:34

2026-08-23T11:42:56+02:00 INFO  [zed::reliability::hang_detection::logging] Background hang detected on Unknown:
Tasks(s) that ran too long
18.15603025s         - crates/fs/src/fs_watcher.rs:85:34

2026-08-23T11:42:56+02:00 INFO  [zed::reliability::hang_detection::logging] Background hang detected on Unknown:
Tasks(s) that ran too long
18.155880042s        - crates/fs/src/fs_watcher.rs:85:34
```

## Solution

My solution is to unblock the blocking code so that it doesn't hang a
background thread whenever the filesystem is slow to respond. The task
poll now returns pending while the syscall runs on the blocking pool, so
other tasks can be polled in the meantime.

## Testing

Behavior is unchanged, so just testing if Zed still picks up created
directories/files should be enough.

## Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content adheres to Zed's UI standards
([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
and
[icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md)
guidelines)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

---

Release Notes:

- Improved responsiveness when watching paths on slow or unresponsive
filesystems

---------

Co-authored-by: Ben Kunkle <ben@zed.dev>
````

## Parents

- [adc8d7918e4cfa59248e85239aee65a50440b27f](https://git.cafe/gitcafe/zed/commit/adc8d7918e4cfa59248e85239aee65a50440b27f?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/7ea077c78b865d17854cee812bb775dbe64a925a?format=markdown)
