summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authorjeff <jeff@FreeBSD.org>2006-04-28 01:05:31 +0000
committerjeff <jeff@FreeBSD.org>2006-04-28 01:05:31 +0000
commiteee673a6a7b12865b2bc6bbecd62f5c98f16fc56 (patch)
treec6aad5a9284f69701435f748943737d89dbdf66c /sys/kern
parent3450f7fc51535f7c00c61837e2187629c7d2af24 (diff)
downloadFreeBSD-src-eee673a6a7b12865b2bc6bbecd62f5c98f16fc56.zip
FreeBSD-src-eee673a6a7b12865b2bc6bbecd62f5c98f16fc56.tar.gz
- Add a BO_NEEDSGIANT flag to the bufobj. This flag forces all child
buffers to go on the buf daemon's DIRTYGIANT queue. - Set BO_NEEDSGIANT on ffs's devvp since the ffs_copyonwrite handler runs in the context of the buf daemon and may require Giant.
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/vfs_subr.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index ca85d6f..dbef93b 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -1446,7 +1446,8 @@ bgetvp(struct vnode *vp, struct buf *bp)
ASSERT_VI_LOCKED(vp, "bgetvp");
vholdl(vp);
- if (VFS_NEEDSGIANT(vp->v_mount))
+ if (VFS_NEEDSGIANT(vp->v_mount) ||
+ vp->v_bufobj.bo_flag & BO_NEEDSGIANT)
bp->b_flags |= B_NEEDSGIANT;
bp->b_vp = vp;
bp->b_bufobj = &vp->v_bufobj;
OpenPOWER on IntegriCloud