In tf_dequeue(), if we reach the end of the fifo list without finding a
non-cancelled element, tmp will be a pointer to the list head, so the
tmp->canceled check is bogus. Use a flag instead to avoid this.
Submitted by: Tao Liu <Tao.Liu@isilon.com>