Use union for per file engine private data storage
fio_file::engine_data has been used by i/o engines to either keep
the offset or point to engine specific private data with casts.
This commit changes it to a union consists of void* and uint64_t
so get/set of offset/pointer can be done without casts (which is
a common technique used even within this same struct).
This may break external engines on compile time, but fio generally
doesn't care about breakage on external engines (no guarantees on
api/abi compatibility) anyway.
Also confirmed this compiles with pmemblk enabled.
Signed-off-by: Tomohiro Kusumi <tkusumi@tuxera.com>
Signed-off-by: Jens Axboe <axboe@fb.com>