Do not fall back to slow synchronous i/o when low on memory or buffers.
The bawrite() schedules the write to happen immediately, and its use frees the current thread to do more cleanups. Submitted by: bde Reviewed by: mckusick Tested by: pho MFC after: 2 weeks
This commit is contained in:
parent
4cd74eecda
commit
2fd2c0b1e3
@ -133,9 +133,11 @@ ffs_update(vp, waitfor)
|
||||
else
|
||||
*((struct ufs2_dinode *)bp->b_data +
|
||||
ino_to_fsbo(fs, ip->i_number)) = *ip->i_din2;
|
||||
if ((waitfor && !DOINGASYNC(vp)) ||
|
||||
(vm_page_count_severe() || buf_dirty_count_severe())) {
|
||||
if ((waitfor && !DOINGASYNC(vp)))
|
||||
error = bwrite(bp);
|
||||
else if (vm_page_count_severe() || buf_dirty_count_severe()) {
|
||||
bawrite(bp);
|
||||
error = 0;
|
||||
} else {
|
||||
if (bp->b_bufsize == fs->fs_bsize)
|
||||
bp->b_flags |= B_CLUSTEROK;
|
||||
|
Loading…
Reference in New Issue
Block a user