diff --git a/src/fccache.c b/src/fccache.c
index b681a5e..7d6396c 100644
--- a/src/fccache.c
+++ b/src/fccache.c
@@ -587,33 +587,6 @@
     return cache->checksum == (int) dir_stat->st_mtime && fnano;
 }
 
-static FcBool
-FcCacheDirsValid (FcConfig *config, FcCache *cache)
-{
-    FcStrSet *dirs = FcStrSetCreateEx (FCSS_GROW_BY_64);
-    FcBool ret = FcFalse;
-    const FcChar8 *sysroot = FcConfigGetSysRoot (config);
-    FcChar8 *d;
-
-    if (!dirs)
-	goto bail;
-    if (sysroot)
-	d = FcStrBuildFilename (sysroot, FcCacheDir (cache), NULL);
-    else
-	d = FcStrdup (FcCacheDir (cache));
-    if (!FcDirScanOnly (dirs, d, config))
-	goto bail1;
-    ret = cache->dirs_count == dirs->num;
-    if (FcDebug () & FC_DBG_CACHE)
-	printf ("%s: cache: %d, fs: %d\n", d, cache->dirs_count, dirs->num);
-
-bail1:
-    FcStrSetDestroy (dirs);
-    FcStrFree (d);
-bail:
-    return ret;
-}
-
 /*
  * Map a cache file into memory
  */
@@ -628,8 +601,7 @@
     cache = FcCacheFindByStat (fd_stat);
     if (cache)
     {
-	if (FcCacheTimeValid (config, cache, dir_stat) &&
-	    FcCacheDirsValid (config, cache))
+	if (FcCacheTimeValid (config, cache, dir_stat))
 	    return cache;
 	FcDirCacheUnload (cache);
 	cache = NULL;
@@ -681,7 +653,6 @@
 	cache->version < FC_CACHE_VERSION_NUMBER ||
 	cache->size != (intptr_t) fd_stat->st_size ||
 	!FcCacheTimeValid (config, cache, dir_stat) ||
-	!FcCacheDirsValid (config, cache) ||
 	!FcCacheInsert (cache, fd_stat))
     {
 	if (allocated)
diff --git a/src/fcdir.c b/src/fcdir.c
index 81c98b6..fd62a34 100644
--- a/src/fcdir.c
+++ b/src/fcdir.c
@@ -233,8 +233,7 @@
 		 FcBlanks	*blanks,
 		 const FcChar8	*dir,
 		 FcBool		force, /* XXX unused */
-		 FcConfig	*config,
-		 FcBool		scanOnly)
+		 FcConfig	*config)
 {
     DIR			*d;
     struct dirent	*e;
@@ -250,7 +249,7 @@
     if (!set && !dirs)
 	return FcTrue;
 
-    if (!blanks && !scanOnly)
+    if (!blanks)
 	blanks = FcConfigGetBlanks (config);
 
     /* freed below */
@@ -303,17 +302,7 @@
      * Scan file files to build font patterns
      */
     for (i = 0; i < files->num; i++)
-    {
-	if (scanOnly)
-	{
-	    if (FcFileIsDir (files->strs[i]))
-		FcFileScanConfig (NULL, dirs, NULL, files->strs[i], config);
-	}
-	else
-	{
-	    FcFileScanConfig (set, dirs, blanks, files->strs[i], config);
-	}
-    }
+	FcFileScanConfig (set, dirs, blanks, files->strs[i], config);
 
 bail2:
     FcStrSetDestroy (files);
@@ -337,15 +326,7 @@
     if (cache || !force)
 	return FcFalse;
 
-    return FcDirScanConfig (set, dirs, blanks, dir, force, FcConfigGetCurrent (), FcFalse);
-}
-
-FcBool
-FcDirScanOnly (FcStrSet		*dirs,
-	       const FcChar8	*dir,
-	       FcConfig		*config)
-{
-    return FcDirScanConfig (NULL, dirs, NULL, dir, FcTrue, config, FcTrue);
+    return FcDirScanConfig (set, dirs, blanks, dir, force, FcConfigGetCurrent ());
 }
 
 /*
@@ -385,7 +366,7 @@
     /*
      * Scan the dir
      */
-    if (!FcDirScanConfig (set, dirs, NULL, d, FcTrue, config, FcFalse))
+    if (!FcDirScanConfig (set, dirs, NULL, d, FcTrue, config))
 	goto bail2;
 
     /*
@@ -440,7 +421,7 @@
     /*
      * Scan the dir
      */
-    if (!FcDirScanConfig (NULL, dirs, NULL, d, FcTrue, config, FcFalse))
+    if (!FcDirScanConfig (NULL, dirs, NULL, d, FcTrue, config))
 	goto bail1;
     /*
      * Rebuild the cache object
diff --git a/src/fcint.h b/src/fcint.h
index ee6cc99..ac911ad 100644
--- a/src/fcint.h
+++ b/src/fcint.h
@@ -851,13 +851,7 @@
 		 FcBlanks	*blanks,
 		 const FcChar8	*dir,
 		 FcBool		force,
-		 FcConfig	*config,
-		 FcBool		scanOnly);
-
-FcPrivate FcBool
-FcDirScanOnly (FcStrSet		*dirs,
-	       const FcChar8	*dir,
-	       FcConfig		*config);
+		 FcConfig	*config);
 
 /* fcfont.c */
 FcPrivate int
