summaryrefslogtreecommitdiffstats
path: root/sys/ufs/ffs/ffs_vfsops.c
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2008-09-16 11:51:06 +0000
committerkib <kib@FreeBSD.org>2008-09-16 11:51:06 +0000
commitf6863a9ef79ec34cd371070704d592a2b5c019c1 (patch)
tree916cd048737fbe3376fc7973f694d424abd09e34 /sys/ufs/ffs/ffs_vfsops.c
parent0488506405edd848b205c59066a7f0b5d53e55e7 (diff)
downloadFreeBSD-src-f6863a9ef79ec34cd371070704d592a2b5c019c1.zip
FreeBSD-src-f6863a9ef79ec34cd371070704d592a2b5c019c1.tar.gz
When attempt is made to suspend a filesystem that is already syspended,
wait until the current suspension is lifted instead of silently returning success immediately. The consequences of calling vfs_write() resume when not owning the suspension are not well-defined at best. Add the vfs_susp_clean() mount method to be called from vfs_write_resume(). Set it to process_deferred_inactive() for ffs, and stop calling it manually. Add the thread flag TDP_IGNSUSP that allows to bypass the suspension point in the vn_start_write. It is intended for use by VFS in the situations where the suspender want to do some i/o requiring calls to vn_start_write(), and this i/o cannot be done later. Reviewed by: tegge In collaboration with: pho MFC after: 1 month
Diffstat (limited to 'sys/ufs/ffs/ffs_vfsops.c')
-rw-r--r--sys/ufs/ffs/ffs_vfsops.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c
index 93e0b48..86b3f60 100644
--- a/sys/ufs/ffs/ffs_vfsops.c
+++ b/sys/ufs/ffs/ffs_vfsops.c
@@ -105,6 +105,7 @@ static struct vfsops ufs_vfsops = {
.vfs_uninit = ffs_uninit,
.vfs_unmount = ffs_unmount,
.vfs_vget = ffs_vget,
+ .vfs_susp_clean = process_deferred_inactive,
};
VFS_SET(ufs_vfsops, ufs, 0);
OpenPOWER on IntegriCloud