}
 EXPORT_SYMBOL_GPL(md_bitmap_wait_behind_writes);
 
-void md_bitmap_destroy(struct mddev *mddev)
+static void bitmap_destroy(struct mddev *mddev)
 {
        struct bitmap *bitmap = mddev->bitmap;
 
                        goto out;
                }
 
-               md_bitmap_destroy(mddev);
+               bitmap_destroy(mddev);
                mddev->bitmap_info.offset = 0;
                if (mddev->bitmap_info.file) {
                        struct file *f = mddev->bitmap_info.file;
                        rv = bitmap_load(mddev);
                        if (rv) {
                                mddev->bitmap_info.offset = 0;
-                               md_bitmap_destroy(mddev);
+                               bitmap_destroy(mddev);
                                goto out;
                        }
                }
 static struct bitmap_operations bitmap_ops = {
        .create                 = bitmap_create,
        .load                   = bitmap_load,
+       .destroy                = bitmap_destroy,
 };
 
 void mddev_set_bitmap_ops(struct mddev *mddev)
 
 struct bitmap_operations {
        int (*create)(struct mddev *mddev, int slot);
        int (*load)(struct mddev *mddev);
+       void (*destroy)(struct mddev *mddev);
 };
 
 /* the bitmap API */
 
 /* these are used only by md/bitmap */
 void md_bitmap_flush(struct mddev *mddev);
-void md_bitmap_destroy(struct mddev *mddev);
 
 void md_bitmap_print_sb(struct bitmap *bitmap);
 void md_bitmap_update_sb(struct bitmap *bitmap);
 
                pers->free(mddev, mddev->private);
        mddev->private = NULL;
        module_put(pers->owner);
-       md_bitmap_destroy(mddev);
+       mddev->bitmap_ops->destroy(mddev);
 abort:
        bioset_exit(&mddev->io_clone_set);
 exit_sync_set:
 
        err = mddev->bitmap_ops->load(mddev);
        if (err) {
-               md_bitmap_destroy(mddev);
+               mddev->bitmap_ops->destroy(mddev);
                goto out;
        }
 
 static void __md_stop(struct mddev *mddev)
 {
        struct md_personality *pers = mddev->pers;
-       md_bitmap_destroy(mddev);
+
+       mddev->bitmap_ops->destroy(mddev);
        mddev_detach(mddev);
        spin_lock(&mddev->lock);
        mddev->pers = NULL;
                                err = mddev->bitmap_ops->load(mddev);
 
                        if (err) {
-                               md_bitmap_destroy(mddev);
+                               mddev->bitmap_ops->destroy(mddev);
                                fd = -1;
                        }
                } else if (fd < 0) {
-                       md_bitmap_destroy(mddev);
+                       mddev->bitmap_ops->destroy(mddev);
                }
        }
 
                                rv = mddev->bitmap_ops->load(mddev);
 
                        if (rv)
-                               md_bitmap_destroy(mddev);
+                               mddev->bitmap_ops->destroy(mddev);
                } else {
                        struct md_bitmap_stats stats;
 
                                module_put(md_cluster_mod);
                                mddev->safemode_delay = DEFAULT_SAFEMODE_DELAY;
                        }
-                       md_bitmap_destroy(mddev);
+                       mddev->bitmap_ops->destroy(mddev);
                        mddev->bitmap_info.offset = 0;
                }
        }