summaryrefslogtreecommitdiffstats
path: root/sys/ufs/ffs
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/ufs/ffs
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/ufs/ffs')
-rw-r--r--sys/ufs/ffs/ffs_vfsops.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c
index 0d8372a..9466d1a 100644
--- a/sys/ufs/ffs/ffs_vfsops.c
+++ b/sys/ufs/ffs/ffs_vfsops.c
@@ -831,7 +831,13 @@ ffs_mountfs(devvp, mp, td)
(void) ufs_extattr_autostart(mp, td);
#endif /* !UFS_EXTATTR_AUTOSTART */
#endif /* !UFS_EXTATTR */
-#ifndef QUOTA
+#ifdef QUOTA
+ /*
+ * Our bufobj must require giant for snapshots when quotas are
+ * enabled.
+ */
+ devvp->v_bufobj.bo_flags |= BO_NEEDSGIANT;
+#else
mp->mnt_kern_flag |= MNTK_MPSAFE;
#endif
return (0);
OpenPOWER on IntegriCloud