merged recent fifo_rw changes in to fifo_xxx