diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py
index ce7456b60..28d3d50d4 100644
--- a/lib/bb/fetch2/__init__.py
+++ b/lib/bb/fetch2/__init__.py
@@ -1325,6 +1325,12 @@ class FetchData(object):
         self.mirrortarballs = []
         self.basename = None
         self.basepath = None
+        # Default to a no-op tracer. Fetch() replaces this with the real
+        # (possibly user-configured) unpack tracer for the URLs it manages,
+        # but FetchData objects created elsewhere (e.g. the per-mirror ones
+        # built in build_mirroruris()) must still have the attribute so that
+        # fetcher unpack methods invoked on them do not raise AttributeError.
+        self.unpack_tracer = DummyUnpackTracer()
         (self.type, self.host, self.path, self.user, self.pswd, self.parm) = decodeurl(d.expand(url))
         self.date = self.getSRCDate(d)
         self.url = url
diff --git a/lib/bb/tests/fetch.py b/lib/bb/tests/fetch.py
index ebc80aa8c..f9c7e3116 100644
--- a/lib/bb/tests/fetch.py
+++ b/lib/bb/tests/fetch.py
@@ -530,6 +530,17 @@ class MirrorUriTest(FetcherTest):
         uris, uds = bb.fetch2.build_mirroruris(fetcher, mirrors, self.d)
         self.assertEqual(uris, ['file:///somepath/downloads/bitbake-1.0.tar.gz', 'file:///someotherpath/downloads/bitbake-1.0.tar.gz'])
 
+    def test_mirror_uds_have_unpack_tracer(self):
+        # The per-mirror FetchData objects must carry an unpack_tracer, otherwise
+        # fetcher unpack methods (e.g. the git-lfs checkout done for a mirror)
+        # raise AttributeError. See YOCTO #15948.
+        fetcher = bb.fetch.FetchData("http://downloads.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz", self.d)
+        mirrors = bb.fetch2.mirror_from_string(self.mirrorvar)
+        uris, uds = bb.fetch2.build_mirroruris(fetcher, mirrors, self.d)
+        self.assertTrue(uds)
+        for ud in uds:
+            self.assertTrue(hasattr(ud, "unpack_tracer"))
+
     def test_urilist2(self):
         # Catch https:// -> files:// bug
         fetcher = bb.fetch.FetchData("https://downloads.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz", self.d)
