hammer2 - Fix a few assertion panics and other bugs
authorMatthew Dillon <dillon@apollo.backplane.com>
Tue, 3 Mar 2015 06:32:12 +0000 (22:32 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Tue, 3 Mar 2015 06:32:12 +0000 (22:32 -0800)
commitcb69ad6427b4bafee20d6a084dc779b64377025b
tree552ee4c32e24a114cebf7f73fd07cdd8038812bb
parenta06d536b271ede1f577aaea9cbc372a2fc2a096e
hammer2 - Fix a few assertion panics and other bugs

* hammer2_io_getblk() was referencing a dio potentially after disposing
  of it.

* Remove the DIO_GOOD patch I previously committed, replacing it with
  a different (better) fix for the DIO_GOOD/DIO_INPROG race.

  The new fix is to run the iocb chains on IO completion before marking
  any of the iocbs done, using a simple depth-first recursion.  INPROG
  is cleared on the last iocb chain so all IOCB_DONE's occur after it
  has been cleared.

* iocb->flags must be modified with atomic ops now.
sys/vfs/hammer2/hammer2_io.c