     (let [out (s/stream)]
       (d/future
         (try
-          (loop [files (find-files root (:after opts))]
+          (loop [files (block-files root (:after opts))]
             (when-let [file (first files)]
               (if-let [id (file->id root file)]
                 ; Check that the id is still before the marker, if set.


  (start
    [this]
    (let [meta-props (initialize-meta root)
          version (:version meta-props)]
      (log/debug "Using storage layout version" version)
      (assoc this :version version)))





;; ## Block Files

(def ^:private prefix-length
  "Number of characters to use as a prefix for top-level directory names."
  8)


(defn- blocks-dir
  "Construct the block directory from the store root."
  ^File
  [root]
  (io/file root "blocks"))


(defn- block-files
  "Walks a block directory tree depth first, returning a sequence of files
  found in lexical order. Intelligently skips subdirectories based on the given
  marker."
  [^File root after]
  (->
    (.listFiles (blocks-dir root))
    (sort)
    (cond->>
      after
      (drop-while #(nat-int? (compare after (.getName ^File %)))))
    (->>
      (mapcat
        (fn list-blocks
          [^File subdir]
          (sort (.listFiles subdir)))))))


(defn- file-stats
