HAMMER VFS - Fix degenerate stall condition in flusher during unmount
authorMatthew Dillon <dillon@apollo.backplane.com>
Mon, 11 Apr 2011 17:07:37 +0000 (10:07 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Mon, 11 Apr 2011 17:07:37 +0000 (10:07 -0700)
commite86903d84f840af38d1b452a6a6c624702373751
tree1c8aab727bd29bd5264614c9a987b0a3d0f31f7d
parent6e9d5afa0d68b9e7002b8ad84a031d93e5c4d7de
HAMMER VFS - Fix degenerate stall condition in flusher during unmount

* Fix a case where the flusher can stall during an unmount.

* Rework the flusher sequence numbers to always allocate a sequence number
  when a flush is requested, remove the flusher.act field, and rejigger the
  code a bit.

* This also cleans up an edge case when a full sync is inserted (when taking
  snapshots, filesystem sync, etc), by inserting several sequence numbers to
  completely flush the UNDO/REDO FIFO before moving on to the next active
  flush group.

Reported-by: Sepherosa Ziehau <sepherosa@gmail.com>, Francois Tigeot <ftigeot@wolfpond.org>, numerous others.
sys/vfs/hammer/hammer.h
sys/vfs/hammer/hammer_flusher.c
sys/vfs/hammer/hammer_mirror.c
sys/vfs/hammer/hammer_pfs.c
sys/vfs/hammer/hammer_prune.c
sys/vfs/hammer/hammer_rebalance.c
sys/vfs/hammer/hammer_reblock.c