diff --git a/src/plugin/ipc/file/fileconnection.cpp b/src/plugin/ipc/file/fileconnection.cpp
index 30c4f28..d5afdf0 100644
--- a/src/plugin/ipc/file/fileconnection.cpp
+++ b/src/plugin/ipc/file/fileconnection.cpp
@@ -676,6 +676,7 @@ void dmtcp::FileConnection::refill(bool isRestart)
     int savedFd = _real_open(savedFilePath.c_str(), O_RDONLY, 0);
     JASSERT(savedFd != -1) (JASSERT_ERRNO) (savedFilePath);
 
+#ifdef CHECK_SAVED_FILES
     if (!areFilesEqual(_fds[0], savedFd, _st_size)) {
       if (_type == FILE_SHM) {
         JWARNING(false) (_path) (savedFilePath)
@@ -693,6 +694,7 @@ void dmtcp::FileConnection::refill(bool isRestart)
         JASSERT(false) (_path) (savedFilePath) (errMsg);
       }
     }
+#endif
     _real_close(savedFd);
   }
 
@@ -839,6 +841,22 @@ void dmtcp::FileConnection::postRestart()
 
     if (fd == -1) {
       _fileAlreadyExists = true;
+#ifndef CHECK_SAVED_FILES
+     /*
+      * XXX: This is a temporary fix. We should delegate this responsibility to
+      *      the ckptfile plugin. See: https://github.com/dmtcp/dmtcp/issues/9
+      */
+      dmtcp::string copyOrig = _path + ".bak";
+      int origFd = _real_open(_path.c_str(), O_RDWR, 0);
+      /* NOTE: This overwites the backup from a previous restart. */
+      int backupFd = _real_open(copyOrig.c_str(), O_CREAT | O_WRONLY);
+      writeFileFromFd(origFd, backupFd); // cp path backup
+      int ckptFd = _real_open(savedFilePath.c_str(), O_RDONLY, 0);
+      writeFileFromFd(ckptFd, origFd); // cp saved path
+      _real_close(origFd);
+      _real_close(backupFd);
+      _real_close(backupFd);
+#endif
     } else {
       int srcFd = _real_open(savedFilePath.c_str(), O_RDONLY, 0);
       JASSERT(srcFd != -1) (_path) (savedFilePath) (JASSERT_ERRNO)
