hammer2 - dmsg stabilization
authorMatthew Dillon <dillon@apollo.backplane.com>
Mon, 5 May 2014 06:52:24 +0000 (23:52 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Mon, 5 May 2014 06:52:24 +0000 (23:52 -0700)
commit323c094767dccbbb77dce2d64e21411ef1a0e984
treeb80b189f727b78fe410c073e67cf6cd7e2eaac6c
parentd30cab67fe1261f18180e4ebf5f27002e2a28acc
hammer2 - dmsg stabilization

This is a general stabilization pass testing xdisk resumption on various
communications failures (killing the local or remote hammer2 service demon).

* Simulate failures on recursive transactions in a bottom-up fashion

* bcmp() does not return an inequality (neg, zero, or positive).  It
  returns only 0 or 1.  Change fs_label RBTREE test to strcmp()

* ref-count the state structure, use dmsg_state_hold()/dmsg_state_drop()
  to control it.  Fix at least one memory leak.

* Consolidate simulated transaction failure core into a helper
  function dmsg_msg_simulate_failure().

* Clean up the tx state on the front-end after the msg has extracted
  necessary information from it, instead of in the transmit thread.
  This is so the state fields are updated synchronously and not delayed
  by the transmit queue.

* Change xdisk's error test to avoid accidently failing a BIO due to
  a communications issue (verses an actual IO error on the remote physical
  disk).

* Remove some invalid assertions, add assertions.
lib/libdmsg/dmsg.h
lib/libdmsg/msg.c
lib/libdmsg/msg_lnk.c
sys/dev/disk/xdisk/xdisk.c
sys/kern/kern_dmsg.c
sys/sys/dmsg.h