* We can get a merged extent, in that case, we need to re-search
         * tree to get the original em for defrag.
         *
-        * If @newer_than is 0 or em::generation < newer_than, we can trust
-        * this em, as either we don't care about the generation, or the
-        * merged extent map will be rejected anyway.
+        * This is because even if we have adjacent extents that are contiguous
+        * and compatible (same type and flags), we still want to defrag them
+        * so that we use less metadata (extent items in the extent tree and
+        * file extent items in the inode's subvolume tree).
         */
-       if (em && (em->flags & EXTENT_FLAG_MERGED) &&
-           newer_than && em->generation >= newer_than) {
+       if (em && (em->flags & EXTENT_FLAG_MERGED)) {
                free_extent_map(em);
                em = NULL;
        }