diff --git a/mercurial/upgrade.py b/mercurial/upgrade.py
index 675a925b556d873bbf249d22dbdeeca409ee213d_bWVyY3VyaWFsL3VwZ3JhZGUucHk=..3737499829246a878b66495908f988c5e7bdc061_bWVyY3VyaWFsL3VwZ3JhZGUucHk= 100644
--- a/mercurial/upgrade.py
+++ b/mercurial/upgrade.py
@@ -561,9 +561,10 @@
         pass # create all the directories
 
     util.copyfile(oldindex, newindex)
-    if oldrl.opener.exists(oldrl.datafile):
+    copydata = oldrl.opener.exists(oldrl.datafile)
+    if copydata:
         util.copyfile(olddata, newdata)
 
     if not (unencodedname.endswith('00changelog.i')
             or unencodedname.endswith('00manifest.i')):
         destrepo.svfs.fncache.add(unencodedname)
@@ -565,8 +566,10 @@
         util.copyfile(olddata, newdata)
 
     if not (unencodedname.endswith('00changelog.i')
             or unencodedname.endswith('00manifest.i')):
         destrepo.svfs.fncache.add(unencodedname)
+        if copydata:
+            destrepo.svfs.fncache.add(unencodedname[:-2] + '.d')
 
 UPGRADE_CHANGELOG = object()
 UPGRADE_MANIFEST = object()
diff --git a/tests/test-upgrade-repo.t b/tests/test-upgrade-repo.t
index 675a925b556d873bbf249d22dbdeeca409ee213d_dGVzdHMvdGVzdC11cGdyYWRlLXJlcG8udA==..3737499829246a878b66495908f988c5e7bdc061_dGVzdHMvdGVzdC11cGdyYWRlLXJlcG8udA== 100644
--- a/tests/test-upgrade-repo.t
+++ b/tests/test-upgrade-repo.t
@@ -604,5 +604,4 @@
   checking manifests
   crosschecking files in changesets and manifests
   checking files
-   warning: revlog 'data/f2.d' not in fncache!
   checked 3 changesets with 3 changes to 3 files
@@ -608,6 +607,4 @@
   checked 3 changesets with 3 changes to 3 files
-  1 warnings encountered!
-  hint: run "hg debugrebuildfncache" to recover from corrupt fncache
 
 Check we can select negatively
 
@@ -699,5 +696,4 @@
   checking manifests
   crosschecking files in changesets and manifests
   checking files
-   warning: revlog 'data/f2.d' not in fncache!
   checked 3 changesets with 3 changes to 3 files
@@ -703,6 +699,4 @@
   checked 3 changesets with 3 changes to 3 files
-  1 warnings encountered!
-  hint: run "hg debugrebuildfncache" to recover from corrupt fncache
 
 Check that we can select filelog only