if (init_resync(conf))
                        return 0;
 
+       /*
+        * Allow skipping a full rebuild for incremental assembly
+        * of a clean array, like RAID1 does.
+        */
+       if (mddev->bitmap == NULL &&
+           mddev->recovery_cp == MaxSector &&
+           !test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery) &&
+           conf->fullsync == 0) {
+               *skipped = 1;
+               max_sector = mddev->dev_sectors;
+               if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery) ||
+                   test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery))
+                       max_sector = mddev->resync_max_sectors;
+               return max_sector - sector_nr;
+       }
+
  skipped:
        max_sector = mddev->dev_sectors;
        if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery) ||