Page MenuHomeFreeBSD

fusefs: support EVFILT_WRITE on /dev/fuse

Authored by asomers on Jun 16 2021, 12:59 AM.
Referenced Files
Unknown Object (File)
Wed, May 22, 6:41 AM
Unknown Object (File)
Sun, Apr 28, 4:23 PM
Unknown Object (File)
Sat, Apr 27, 2:14 PM
Unknown Object (File)
Apr 20 2024, 1:14 AM
Unknown Object (File)
Apr 13 2024, 12:50 PM
Unknown Object (File)
Jan 13 2024, 11:41 AM
Unknown Object (File)
Dec 20 2023, 5:01 PM
Unknown Object (File)
Dec 20 2023, 7:34 AM



fusefs: support EVFILT_WRITE on /dev/fuse

/dev/fuse is always ready for writing, so it's kind of dumb to poll it.
But some applications do it anyway. Better to return ready than EINVAL.

MFC after: 2 weeks

Test Plan

Existing kqueue test modified to use kqueue for writing as well as for reading. Tested with a real file system from

Diff Detail

rG FreeBSD src repository
Lint Not Applicable
Tests Not Applicable

Event Timeline


Curious about this change


It's necessary to make the tests pass, though I could've done it a different way. The problem is that line 943 adds the EVFILT_WRITE filter to the same fd. When control comes back around to here, kevent() immediately returns because EVFILT_WRITE is still set, and and file descriptor is always writable. So adding EV_ONESHOT at 943 prevents kevent here from returning too soon. And I added EV_ONESHOT here for symmetry's sake, and because line 943 doesn't care about readability.

Alternatively, I could've added EV_ONESHOT at line 943 only; that would've worked. Or, I could've set EV_DISABLE on EVFILT_READ at line 946 or here.

This revision is now accepted and ready to land.Jun 16 2021, 5:06 PM
This revision was automatically updated to reflect the committed changes.