[writeboost] Redesign writeback structure

Migrate daemon is responsible to migrate segments on the cache device
the backing device.
The migration is segment-by-segment basis. It first determines which
segments to migrate and then migrates them all in sorted and batched
manner.

This patch defines struct migrate_segment to clearly show this algorithm
in the code, which improves readability.

Also, using KMEM buffers (alloced from aligned slab) instead of a VMA buffer
removes the limit of the number of segments to migrate. If we use even
better RAID-ed backing device instead of a single HDD it is capable of
processing thousand of migrate IOs which needs more memory space than
vmallac can allocate.

Signed-off-by: Akira Hayakawa <ruby.wktk@gmail.com>
[writeboost] fix mixed declarations and code in apply_valid_segments

Signed-off-by: Akira Hayakawa <ruby.wktk@gmail.com>
[writeboost] refactor: padding in plog_meta_device

Signed-off-by: Akira Hayakawa <ruby.wktk@gmail.com>
[writeboost] explicit set force_drop true

Signed-off-by: Akira Hayakawa <ruby.wktk@gmail.com>
Merge pull request #11 from akiradeveloper/feature/redesign-writeback-struct-v3

Feature/redesign writeback struct v3