| Summary: | During shutdown sync fails: "giving up on buffers" | ||
|---|---|---|---|
| Product: | Base System | Reporter: | Bastian Fuchs <bastiaf> |
| Component: | kern | Assignee: | Don Lewis <truckman> |
| Status: | Closed FIXED | ||
| Severity: | Affects Only Me | ||
| Priority: | Normal | ||
| Version: | Unspecified | ||
| Hardware: | Any | ||
| OS: | Any | ||
|
Description
Bastian Fuchs
2004-01-04 18:10:13 UTC
State Changed From-To: open->patched Fix committed in src/sys/kern/vfs_subr.c 1.503 and 1.504, which were included in 5.3-RELEASE. Awaiting confirmation of fix from PR submitter before closing PR. Responsible Changed From-To: freebsd-bugs->truckman State Changed From-To: patched->closed No feedback from PR submitter, but this problem should have been fixed before RELENG_5_BP and 5.3-RELEASE by these commits: truckman 2004-07-01 23:59:19 UTC FreeBSD src repository Modified files: sys/kern vfs_subr.c Log: When shutting down the syncer kernel thread, first tell it to run faster and iterate to over its work list a few times in an attempt to empty the work list before the syncer terminates. This leaves fewer dirty blocks to be written at the "syncing disks" stage and keeps the the "giving up on N buffers" problem from being triggered by the presence of a large soft updates work list at system shutdown time. The downside is that the syncer takes noticeably longer to terminate. Tested by: "Arjan van Leeuwen" <avleeuwen AT piwebs DOT com> Approved by: mckusick Revision Changes Path 1.495 +68 -6 src/sys/kern/vfs_subr.c truckman 2004-07-05 01:07:33 UTC FreeBSD src repository Modified files: sys/kern vfs_subr.c Log: Rework syncer termination code: Speed up the syncer when shutting down by sleeping for a shorter period of time instead of cranking up rushjob and using the normal one second sleep. Skip empty worklist slots when shutting down to avoid lengthy intervals of inactivity. Give I/O more time to complete between steps by not speeding the syncer quite as much. Terminate the syncer after one full pass through the worklist plus one second with the worklist containing nothing but syncer vnodes. Print an indication of shutdown progress to the console. Add a sysctl, vfs.worklist_len, to allow the size of the syncer worklist to be monitored. Revision Changes Path 1.503 +79 -33 src/sys/kern/vfs_subr.c truckman 2004-07-05 21:32:01 UTC FreeBSD src repository Modified files: sys/kern vfs_subr.c Log: Unconditionally set last_work_seen while in the SYNCER_RUNNING state so that last_work_seen has a reasonable value at the transition to the SYNCER_SHUTTING_DOWN state, even if net_worklist_len happened to be zero at the time. Initialize last_work_seen to zero as a safety measure in case the syncer never ran in the SYNCER_RUNNING state. Tested by: phk Revision Changes Path 1.504 +4 -5 src/sys/kern/vfs_subr.c |