chg: use lock instead of trylock when not benchmarking
chg: file_open with O_CREAT will also create required directories.
chg: more conventional struct hook instead of HOOK macro
chg: proper wrapper around rwlocks

With bench, logs, etc...