Two nitpicks: you don't need to cast the return value of `g_hash_table_lookup`, and I prefer to explicitly always bring the typed `user_data` back into scope within callbacks (if you end up using it).
So I would just do something like `GHashTable *file_statistics = user_data;` above.