Bug 60900

Summary: During shutdown sync fails: "giving up on buffers"
Product: Base System Reporter: Bastian Fuchs <bastiaf>
Component: kernAssignee: 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
During shutdown the buffer sync SOMETIMES fails with
syncing disks, buffers remaining... 55 55 55 55 55 (some times more, don't know exactly)
giving up on 55 buffers

I am using UFS2 for root and UFS2+SU for all other filesystems (/var, /tmp, /usr, /home).

The same problem exists with 5.1 and 5.1-current.

How-To-Repeat: The problem appears irregular on shutdowns.
Comment 1 Don Lewis freebsd_committer freebsd_triage 2005-09-07 01:47:41 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. 


Comment 2 Don Lewis freebsd_committer freebsd_triage 2005-09-07 01:47:41 UTC
Responsible Changed
From-To: freebsd-bugs->truckman
Comment 3 Don Lewis freebsd_committer freebsd_triage 2005-09-16 04:05:15 UTC
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