I think 'copying' all the data isn't "double buffering" in the sense I'm used to. ?
I thought it was generally..
Have a pointer which points to either "page1" or "page2" ...it's always pointing to the "old copy", and the new copy is used for new writes. When the new copy is full, switch the pointer to point to it.
Idk, just my 2 cents. This for the OS you're writing? Graphics?
edit: 'full' is the wrong word: complete*. maybe.