Hi Thorsten,
Here's my take: If the assignments happen as 8-byte aligned stores, like I think you're showing in your example code, then after a reboot in your scenario you'll have either the entire 8-bytes from the first assignment, or the entire 8-bytes from the second assignment, but not a mix.
Of course, if you define the packed struct as you said and do assignments to the individual fields, then a cache eviction could happen between any two assignments and you could get partial results persisted. But the way you described it where the assignment is a single aligned 8-byte store, you should get the atomicity you're looking for.
-andy