diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py
index 9cb268be5..7b981b0f3 100644
--- a/lib/bb/fetch2/__init__.py
+++ b/lib/bb/fetch2/__init__.py
@@ -755,13 +755,24 @@ def update_stamp(ud, d):
     if not ud.needdonestamp:
         return
 
-    if os.path.exists(ud.donestamp):
-        # Touch the done stamp file to show active use of the download
+    def bump_utime(path):
         try:
-            os.utime(ud.donestamp, None)
+            os.utime(path, None)
         except:
             # Errors aren't fatal here
             pass
+
+    if os.path.exists(ud.donestamp):
+        # Touch the done stamp file to show active use of the download
+        bump_utime(ud.donestamp)
+
+        # Also mark any mirror tarballs related to the download as being active.
+        dl_dir = d.getVar("DL_DIR")
+        for mirrortarball in ud.mirrortarballs:
+            mirrortarball = os.path.join(dl_dir, mirrortarball) + ".done"
+            # There's no need to check if the file exists as `bump_utime` will
+            # ignore non-existent files.
+            bump_utime(mirrortarball)
     else:
         try:
             checksums = verify_checksum(ud, d)
diff --git a/lib/bb/tests/fetch.py b/lib/bb/tests/fetch.py
index a1e4b45f8..b29d5909f 100644
--- a/lib/bb/tests/fetch.py
+++ b/lib/bb/tests/fetch.py
@@ -21,6 +21,7 @@ import subprocess
 import json
 import tarfile
 import threading
+import time
 from bb.fetch2 import URI
 import bb
 import bb.utils
@@ -1101,18 +1102,32 @@ class FetcherNetworkTest(FetcherTest):
                                 cwd=os.path.join(self.unpackdir, 'git')).strip()
             self.assertEqual(revision, "270a05b0b4ba0959fe0624d2a4885d7b70426da5")
 
+        def checkdonestamp(fetcher, url, download_timestamp):
+            ud = fetcher.ud[url]
+            self.assertGreaterEqual(os.stat(ud.donestamp).st_mtime, download_timestamp)
+
+            dldir = self.d.getVar("DL_DIR")
+            for mirrortarball in ud.mirrortarballs:
+                mirrortarball = os.path.join(dldir, mirrortarball) + ".done"
+                if os.path.exists(mirrortarball):
+                    self.assertGreaterEqual(os.stat(mirrortarball).st_mtime, download_timestamp)
+
         self.d.setVar("BB_GENERATE_MIRROR_TARBALLS", "1")
         self.d.setVar("SRCREV", "270a05b0b4ba0959fe0624d2a4885d7b70426da5")
         fetcher = bb.fetch.Fetch([url1], self.d)
+        download_timestamp = time.time()
         fetcher.download()
         checkrevision(self, fetcher)
+        checkdonestamp(fetcher, url1, download_timestamp)
         # Wipe out the dldir clone and the unpacked source, turn off the network and check mirror tarball works
         bb.utils.prunedir(self.dldir + "/git2/")
         bb.utils.prunedir(self.unpackdir)
         self.d.setVar("BB_NO_NETWORK", "1")
         fetcher = bb.fetch.Fetch([url2], self.d)
+        download_timestamp = time.time()
         fetcher.download()
         checkrevision(self, fetcher)
+        checkdonestamp(fetcher, url2, download_timestamp)
 
     @skipIfNoNetwork()
     def test_gitfetch(self):
