freebsd-skq/sys/ufs/ffs
kib dae532b324 Split the global taskqueue used to process all UFS trim completions,
into per-mount taskqueue with the private taskqueue processing thread.
This allows to drain the taskqueue on unmount, to ensure that all
TRIMs are finished before mount structures are freed.

But just draining the taskqueue where TRIM biodone geom-up completions
are processed is not enough, since ffs_blkfree(), called by the task,
might result in more writes.  Count inflight delayed blkfree's and
pause() unmount until the counter drains as well.

Reported by:	Nick Evans <nevans@talkpoint.com>
Tested by:	Nick Evans <nevans@talkpoint.com>, pho
Sponsored by:	The FreeBSD Foundation
MFC after:	2 weeks
2016-03-27 08:21:17 +00:00
..
ffs_alloc.c Split the global taskqueue used to process all UFS trim completions, 2016-03-27 08:21:17 +00:00
ffs_balloc.c Do not perform read-ahead for BA_CLRBUF request when we are low on 2015-10-27 13:44:13 +00:00
ffs_extern.h Remove ffs_mountroot() prototype; seems to be long gone. 2016-01-28 12:21:23 +00:00
ffs_inode.c The UFS filesystem requires that the last block of a file always be 2016-02-24 01:58:40 +00:00
ffs_rawread.c Refactor unmapped buffer address handling. 2015-07-23 19:13:41 +00:00
ffs_snapshot.c The VOP_LOOKUP() implementations for CREATE op do not put the name 2014-12-18 10:01:12 +00:00
ffs_softdep.c Fix locking mistake in softdep_waitidle(). The surrounding code 2016-03-23 09:58:51 +00:00
ffs_subr.c - Make 'struct buf *buf' private to vfs_bio.c. Having a global variable 2015-07-29 02:26:57 +00:00
ffs_suspend.c Remove several write-only variables, all reported by the gcc 4.9 2015-05-29 13:24:17 +00:00
ffs_tables.c
ffs_vfsops.c Split the global taskqueue used to process all UFS trim completions, 2016-03-27 08:21:17 +00:00
ffs_vnops.c Refactor unmapped buffer address handling. 2015-07-23 19:13:41 +00:00
fs.h ufs: small formatting fixes. 2014-03-02 02:52:34 +00:00
softdep.h When mounting SU-enabled mount point, wait until the softdep_flush() 2015-01-30 11:41:46 +00:00