block: bfq ported from linux kernel 3.12