How can I lseek64 to 8 gigabytes or beyond?

I am opening my file (well, raw device) with open64, and with the O_LARGEFILE flag. My lseek64's are being called with SEEK_SET. I am using full-fledged off64_t's, not off_t's.

lseek64 calls seem to be alright up to an 8 gigabyte barrier, at which point, the position I try to seek to seems to be getting modulused by 8 gigabytes. i.e. 8 gigs seeks to 0, 8 gigs + 1k seeks to 1k, and so on. At least, that is what the return values of lseek64 tell me.

I have googled all over, and google-groups'ed for solutions, but any slightly relevant discussion is about the 2- or 4-gig limit of regular lseek.

This is on a Red Hat 7 hybrid, running a modified 2.4.18 kernel, compiled with "cc (GCC) 3.2.2 20030222". My program runs on a reiserfs filesystem.