hammer2 - xop stabilization - part 2/many
authorMatthew Dillon <dillon@apollo.backplane.com>
Tue, 30 Jun 2015 06:37:20 +0000 (23:37 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Tue, 30 Jun 2015 06:41:48 +0000 (23:41 -0700)
commite2163f5b586ddc73c26edb8ff227f51c8059fb75
tree0fa7f2992b64de61711c48907190e3118887a341
parentb659e5dd7d917e3bd3c47fbc1a0dd4c3545199e3
hammer2 - xop stabilization - part 2/many

* The xop mechanics do a quorum calculation, and will also do quorum
  calculations for the inode cluster (not yet in).  This calculation is
  primarily based on the bref.modify_tid.

  Each backend XOP now needs its own modify_tid to properly distinguish
  between and eventually serialize dependent backend ops.

* Implement discrete modify_tid (mtid) reservations in
  hammer2_xop_alloc().  Remove the old modify_tid reservation code that only
  incremented it on a per-flush basis.

* The flush code will acquire a unique modify_tid which is greater than all
  prior modify_tids in stage 2 (after it clears PREFLUSH).

* The hammer2_xop_alloc() code is too messy returning the union structure,
  return a void * instead so the caller can just assign it to the correct
  sub-union structure.
13 files changed:
sys/vfs/hammer2/TODO
sys/vfs/hammer2/hammer2.h
sys/vfs/hammer2/hammer2_bulkscan.c
sys/vfs/hammer2/hammer2_chain.c
sys/vfs/hammer2/hammer2_flush.c
sys/vfs/hammer2/hammer2_freemap.c
sys/vfs/hammer2/hammer2_inode.c
sys/vfs/hammer2/hammer2_ioctl.c
sys/vfs/hammer2/hammer2_strategy.c
sys/vfs/hammer2/hammer2_thread.c
sys/vfs/hammer2/hammer2_vfsops.c
sys/vfs/hammer2/hammer2_vnops.c
sys/vfs/hammer2/hammer2_xops.c