diff options
author | jeff <jeff@FreeBSD.org> | 2006-04-28 01:05:31 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2006-04-28 01:05:31 +0000 |
commit | eee673a6a7b12865b2bc6bbecd62f5c98f16fc56 (patch) | |
tree | c6aad5a9284f69701435f748943737d89dbdf66c /sys/ufs | |
parent | 3450f7fc51535f7c00c61837e2187629c7d2af24 (diff) | |
download | FreeBSD-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')
-rw-r--r-- | sys/ufs/ffs/ffs_vfsops.c | 8 |
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); |