The block should be alloced sequential

Currently the invalid blocks are inserted into the list head - which
are also removed from the list head. Say if there are blocks with DBN
from 1 to 10 are got freed one by one (e.g once after the initialization)
and inserted into the invalid list. Then DBN 10 will be alloced first,
and DBN 9, and DBN 8, and so on.
Therefore if they are alloced by a seqread cachemiss read, the following
repeated cacheread will read SSD in reverse order, which is bad even for
a SSD since the device readahead cannot be activated.

-zyh