FIX: Rename reserving_segment_id to urge_migrate
FIX: use atomic64_t

By Mikulas's review
64 bit variables are not atomic in 32 bit system.

Change to atomic64_t:
last_flushed_segment_id,
last_migrated_segment_id
FIX: don't use bool. use 32bit int

Mikulas's review
Some particular system can't access memory objects smaller than 32bits.
FIX: wrap variable accesses by ACCESS_ONCE to avoid unexpected
optimization

Mikulas's Review
FIX: use atomic64_t for u64 concurrent values. Merge branch 'feature/mikulas-id-atomic' into develop

Mikulas's Review

Conflicts:
	Driver/dm-writeboost.h
FIX: use mempool for runtime allocations

Mikulas's Review
kmalloc_retry should be removed and use __GFP_NOFAIL

__GFP_NOFAIL is seldom used in Linux kernel
which makes me think of using mempool overall.

introduced:
buf_1_pool,
buf_8_pool,
flush_job_pool
wakeup when migration is urgent

Mikulas's Review
migration daemon should not keep sleeping
nevertheless the migration is urgent.

inserted
wake_up_process(migrate daemon)
FIX: wait time of flush daemon is modified to 1 sec from 100 ms

Mikulas's Review
100ms looping while idle is too fast
it wastes CPU and Energy.

My proposal is to set it to 1 sec.
Add TODO

flush daemon waits on flush_wait_queue
I think the queue should be removed and
wait like other daemons.
FIX: 64bit divide and modulo

Mikulas's Review:
use divxxxxx functions
instead of / or % operator