Have you tried adding volatile qualifiers to the overall structures?
(I was going the other way: I started with a pragma on my overall file, then added volatile qualifiers to my structures, then had to add volatile qualifiers to the individual structure members! :-| )
One thing that makes me uncertain is that the struct members are clearly specified as being volatile yet the compiler doesn't treat them that way.
Retrieving data ...