Will setting the mtime in the past and using 0644 for the mode cause any other issues? I know it's hard to predict, but can anyone think of any right now?

Perhaps we could instead set the mtime etc to the same as the old file (or just compare the two files with the mtime etc stripped) and thus avoid any such issues?