public static void record_IOclose( AutoBuffer b, int flavor ) {
    H2ONode h2o = b._h2o==null ? H2O.SELF : b._h2o;
    // First long word going out has sender-port and a 'bad' control packet
    long b0 = UDP.udp.i_o.ordinal(); // Special flag to indicate io-record and not a rpc-record
    b0 |= H2O.SELF._key.udp_port()<<8;
    b0 |= flavor<<24;           // I/O flavor; one of the Value.persist backends
    long iotime = b._time_start_ms > 0 ? (b._time_close_ms - b._time_start_ms) : 0;
    b0 |= iotime<<32;           // msec from start-to-finish, including non-i/o overheads
    long b8 = b._size;          // byte's transfered in this I/O
    long ns = b._time_io_ns;    // nano's blocked doing I/O
    record2(h2o,ns,true,b.readMode()?1:0,0,b0,b8);
  }
public static void record_IOclose ( AutoBuffer b , int flavor ) { H2ONode h2o = b . _h2o == null ? H2O . SELF : b . _h2o ; long b0 = UDP . udp . i_o . ordinal ( ) ; b0 |= H2O . SELF . _key . udp_port ( ) << 8 ; b0 |= flavor << 24 ; long iotime = b . _time_start_ms > 0 ? ( b . _time_close_ms - b . _time_start_ms ) : 0 ; b0 |= iotime << 32 ; long b8 = b . _size ; long ns = b . _time_io_ns ; record2 ( h2o , ns , true , b . readMode ( ) ? 1 : 0 , 0 , b0 , b8 ) ; }
Record a completed I/O event.  The nanosecond time slot is actually nano's-blocked-on-io