static void
 nfsd_file_schedule_laundrette(void)
 {
-       if ((atomic_read(&nfsd_file_rhash_tbl.nelems) == 0) ||
-           test_bit(NFSD_FILE_CACHE_UP, &nfsd_file_flags) == 0)
-               return;
-
-       queue_delayed_work(system_wq, &nfsd_filecache_laundrette,
-                       NFSD_LAUNDRETTE_DELAY);
+       if (test_bit(NFSD_FILE_CACHE_UP, &nfsd_file_flags))
+               queue_delayed_work(system_wq, &nfsd_filecache_laundrette,
+                                  NFSD_LAUNDRETTE_DELAY);
 }
 
 static void
 nfsd_file_gc_worker(struct work_struct *work)
 {
        nfsd_file_gc();
-       nfsd_file_schedule_laundrette();
+       if (list_lru_count(&nfsd_file_lru))
+               nfsd_file_schedule_laundrette();
 }
 
 static unsigned long