Page MenuHomeFreeBSD

vinvalbuf: do not panic if we were unable to flush dirty buffers
ClosedPublic

Authored by kib on May 30 2021, 5:13 PM.
Tags
None
Referenced Files
F139490151: D30555.id90134.diff
Fri, Dec 12, 4:45 PM
Unknown Object (File)
Wed, Dec 10, 8:18 AM
Unknown Object (File)
Thu, Nov 20, 2:40 AM
Unknown Object (File)
Nov 12 2025, 2:46 AM
Unknown Object (File)
Nov 5 2025, 11:01 AM
Unknown Object (File)
Nov 4 2025, 12:06 AM
Unknown Object (File)
Nov 4 2025, 12:05 AM
Unknown Object (File)
Nov 4 2025, 12:03 AM
Subscribers

Details

Summary

Return EBUSY instead and let caller to handle the issue.

For vgone()/vnode reclamation, caller first does vinvalbuf(V_SAVE), which return EBUSY in case dirty buffers where not flushed. Then caller calls vinvalbuf(0) due to non-zero return, which gets rid of all dirty buffers without dependencies.

PR: 238565

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

kib requested review of this revision.May 30 2021, 5:13 PM
kib created this revision.

Works for me. You should also reenable the test in tests/sys/fs/fusefs/write.cc.

This revision is now accepted and ready to land.May 30 2021, 6:35 PM

You should also reenable the test in tests/sys/fs/fusefs/write.cc.

Please do it yourself after my change.