freebsd-dev/sys/ufs/ffs
Konstantin Belousov ba05dec5a4 The softdep freeblks workitem might hold a reference on the dquot.
Current dqflush() panics when a dquot with with non-zero refcount is
encountered.  The situation is possible, because quotas are turned off
before softdep workitem queue if flushed, due to the quota file writes
might create softdep workitems.

Make the encountering an active dquot in dqflush() not fatal, return
the error from quotaoff() instead.  Ignore the quotaoff() failures
when ffs_flushfiles() is called in the course of softdep_flushfiles()
loop, until the last iteration.  At the last loop, the quotas must be
closed, and because SU workitems should be already flushed, the
references to dquot are gone.

Sponsored by:	The FreeBSD Foundation
Reported and tested by:	pho
Reviewed by:	mckusick
MFC after:	2 weeks
2013-02-27 07:32:39 +00:00
..
ffs_alloc.c An inode block must not be blockingly read while cg block is owned. 2013-02-27 07:31:23 +00:00
ffs_balloc.c When a file is first being written, the dynamic block reallocation 2012-11-03 18:55:55 +00:00
ffs_extern.h Add UFS writesuspension mechanism, designed to allow userland processes 2012-11-18 18:57:19 +00:00
ffs_inode.c For UFS2 i_blocks is unsigned. The current "sanity" check that it 2013-02-03 17:16:32 +00:00
ffs_rawread.c
ffs_snapshot.c Add flags argument to vfs_write_resume() and remove 2013-01-11 06:08:32 +00:00
ffs_softdep.c The softdep freeblks workitem might hold a reference on the dquot. 2013-02-27 07:32:39 +00:00
ffs_subr.c
ffs_suspend.c Add flags argument to vfs_write_resume() and remove 2013-01-11 06:08:32 +00:00
ffs_tables.c
ffs_vfsops.c The softdep freeblks workitem might hold a reference on the dquot. 2013-02-27 07:32:39 +00:00
ffs_vnops.c After the PHYS_TO_VM_PAGE() function was de-inlined, the main reason 2012-08-05 14:11:42 +00:00
fs.h Fix build of kdump(1). 2012-11-18 22:03:31 +00:00
softdep.h