return ret;
 }
 
-/**
- * erase_block - Manually erase a PEB.
- * @ubi: UBI device object
- * @e: the physical eraseblock to erase
- *
- * This function returns zero in case of success and a negative error code in
- * case of failure.
- */
-static int erase_block(struct ubi_device *ubi, struct ubi_wl_entry *e)
-{
-       int err;
-       struct ubi_ec_hdr *ec_hdr;
-       long long ec = e->ec;
-
-       ec_hdr = kzalloc(ubi->ec_hdr_alsize, GFP_NOFS);
-       if (!ec_hdr)
-               return -ENOMEM;
-
-       err = ubi_io_sync_erase(ubi, e->pnum, 0);
-       if (err < 0)
-               goto out;
-
-       ec += err;
-       if (ec > UBI_MAX_ERASECOUNTER) {
-               err = -EINVAL;
-               goto out;
-       }
-
-       ec_hdr->ec = cpu_to_be64(ec);
-       err = ubi_io_write_ec_hdr(ubi, e->pnum, ec_hdr);
-       if (err < 0)
-               goto out;
-
-       e->ec = ec;
-       spin_lock(&ubi->wl_lock);
-       if (e->ec > ubi->max_ec)
-               ubi->max_ec = e->ec;
-       spin_unlock(&ubi->wl_lock);
-
-out:
-       kfree(ec_hdr);
-       return err;
-}
-
 /**
  * invalidate_fastmap - destroys a fastmap.
  * @ubi: UBI device object
 
                if (!tmp_e) {
                        if (old_fm && old_fm->e[i]) {
-                               ret = erase_block(ubi, old_fm->e[i]);
+                               ret = ubi_sync_erase(ubi, old_fm->e[i], 0);
                                if (ret < 0) {
                                        ubi_err(ubi, "could not erase old fastmap PEB");
 
        if (old_fm) {
                /* no fresh anchor PEB was found, reuse the old one */
                if (!tmp_e) {
-                       ret = erase_block(ubi, old_fm->e[0]);
+                       ret = ubi_sync_erase(ubi, old_fm->e[0], 0);
                        if (ret < 0) {
                                ubi_err(ubi, "could not erase old anchor PEB");
 
 
                   struct ubi_attach_info *ai_scan);
 
 /* wl.c */
+int ubi_sync_erase(struct ubi_device *ubi, struct ubi_wl_entry *e, int torture);
 int ubi_wl_get_peb(struct ubi_device *ubi);
 int ubi_wl_put_peb(struct ubi_device *ubi, int vol_id, int lnum,
                   int pnum, int torture);
 
 }
 
 /**
- * sync_erase - synchronously erase a physical eraseblock.
+ * ubi_sync_erase - synchronously erase a physical eraseblock.
  * @ubi: UBI device description object
  * @e: the physical eraseblock to erase
  * @torture: if the physical eraseblock has to be tortured
  * This function returns zero in case of success and a negative error code in
  * case of failure.
  */
-static int sync_erase(struct ubi_device *ubi, struct ubi_wl_entry *e,
-                     int torture)
+int ubi_sync_erase(struct ubi_device *ubi, struct ubi_wl_entry *e, int torture)
 {
        int err;
        struct ubi_ec_hdr *ec_hdr;
        dbg_wl("erase PEB %d EC %d LEB %d:%d",
               pnum, e->ec, wl_wrk->vol_id, wl_wrk->lnum);
 
-       err = sync_erase(ubi, e, wl_wrk->torture);
+       err = ubi_sync_erase(ubi, e, wl_wrk->torture);
        if (!err) {
                spin_lock(&ubi->wl_lock);
 
        ubi->lookuptbl[e->pnum] = e;
 
        if (sync) {
-               err = sync_erase(ubi, e, false);
+               err = ubi_sync_erase(ubi, e, false);
                if (err)
                        goto out_free;