UBI: get rid of ubi_ltree_slab

Linux-MTD Mailing List linux-mtd at lists.infradead.org
Sun Feb 3 06:59:01 EST 2008


Gitweb:     http://git.infradead.org/?p=mtd-2.6.git;a=commit;h=b9a06623d9d0c6dff758d525ceb0d9e2bba8f7d6
Commit:     b9a06623d9d0c6dff758d525ceb0d9e2bba8f7d6
Parent:     4fac9f698404a5cd50b978fbdb7e54235353c215
Author:     Artem Bityutskiy <Artem.Bityutskiy at nokia.com>
AuthorDate: Wed Jan 16 12:11:54 2008 +0200
Committer:  Artem Bityutskiy <Artem.Bityutskiy at nokia.com>
CommitDate: Fri Jan 25 16:41:24 2008 +0200

    UBI: get rid of ubi_ltree_slab
    
    This slab cache is not really needed since the number of objects
    is low and the constructor does not make much sense because we
    allocate oblects when doint I/O, which is way slower then allocation.
    
    Suggested-by: Arnd Bergmann <arnd at arndb.de>
    Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy at nokia.com>
---
 drivers/mtd/ubi/build.c |   28 +---------------------------
 drivers/mtd/ubi/eba.c   |   12 +++++++-----
 drivers/mtd/ubi/ubi.h   |    1 -
 3 files changed, 8 insertions(+), 33 deletions(-)

diff --git a/drivers/mtd/ubi/build.c b/drivers/mtd/ubi/build.c
index 8f1f9fe..8b45735 100644
--- a/drivers/mtd/ubi/build.c
+++ b/drivers/mtd/ubi/build.c
@@ -66,9 +66,6 @@ static struct mtd_dev_param mtd_dev_param[UBI_MAX_DEVICES];
 /* Root UBI "class" object (corresponds to '/<sysfs>/class/ubi/') */
 struct class *ubi_class;
 
-/* Slab cache for lock-tree entries */
-struct kmem_cache *ubi_ltree_slab;
-
 /* Slab cache for wear-leveling entries */
 struct kmem_cache *ubi_wl_entry_slab;
 
@@ -858,20 +855,6 @@ int ubi_detach_mtd_dev(int ubi_num, int anyway)
 }
 
 /**
- * ltree_entry_ctor - lock tree entries slab cache constructor.
- * @obj: the lock-tree entry to construct
- * @cache: the lock tree entry slab cache
- * @flags: constructor flags
- */
-static void ltree_entry_ctor(struct kmem_cache *cache, void *obj)
-{
-	struct ubi_ltree_entry *le = obj;
-
-	le->users = 0;
-	init_rwsem(&le->mutex);
-}
-
-/**
  * find_mtd_device - open an MTD device by its name or number.
  * @mtd_dev: name or number of the device
  *
@@ -933,17 +916,11 @@ static int __init ubi_init(void)
 		goto out_version;
 	}
 
-	ubi_ltree_slab = kmem_cache_create("ubi_ltree_slab",
-					   sizeof(struct ubi_ltree_entry), 0,
-					   0, &ltree_entry_ctor);
-	if (!ubi_ltree_slab)
-		goto out_dev_unreg;
-
 	ubi_wl_entry_slab = kmem_cache_create("ubi_wl_entry_slab",
 						sizeof(struct ubi_wl_entry),
 						0, 0, NULL);
 	if (!ubi_wl_entry_slab)
-		goto out_ltree;
+		goto out_dev_unreg;
 
 	/* Attach MTD devices */
 	for (i = 0; i < mtd_devs; i++) {
@@ -980,8 +957,6 @@ out_detach:
 			mutex_unlock(&ubi_devices_mutex);
 		}
 	kmem_cache_destroy(ubi_wl_entry_slab);
-out_ltree:
-	kmem_cache_destroy(ubi_ltree_slab);
 out_dev_unreg:
 	misc_deregister(&ubi_ctrl_cdev);
 out_version:
@@ -1005,7 +980,6 @@ static void __exit ubi_exit(void)
 			mutex_unlock(&ubi_devices_mutex);
 		}
 	kmem_cache_destroy(ubi_wl_entry_slab);
-	kmem_cache_destroy(ubi_ltree_slab);
 	misc_deregister(&ubi_ctrl_cdev);
 	class_remove_file(ubi_class, &ubi_version);
 	class_destroy(ubi_class);
diff --git a/drivers/mtd/ubi/eba.c b/drivers/mtd/ubi/eba.c
index 85297cd..7c05c6e 100644
--- a/drivers/mtd/ubi/eba.c
+++ b/drivers/mtd/ubi/eba.c
@@ -137,10 +137,12 @@ static struct ubi_ltree_entry *ltree_add_entry(struct ubi_device *ubi,
 {
 	struct ubi_ltree_entry *le, *le1, *le_free;
 
-	le = kmem_cache_alloc(ubi_ltree_slab, GFP_NOFS);
+	le = kmalloc(sizeof(struct ubi_ltree_entry), GFP_NOFS);
 	if (!le)
 		return ERR_PTR(-ENOMEM);
 
+	le->users = 0;
+	init_rwsem(&le->mutex);
 	le->vol_id = vol_id;
 	le->lnum = lnum;
 
@@ -188,7 +190,7 @@ static struct ubi_ltree_entry *ltree_add_entry(struct ubi_device *ubi,
 	spin_unlock(&ubi->ltree_lock);
 
 	if (le_free)
-		kmem_cache_free(ubi_ltree_slab, le_free);
+		kfree(le_free);
 
 	return le;
 }
@@ -236,7 +238,7 @@ static void leb_read_unlock(struct ubi_device *ubi, int vol_id, int lnum)
 
 	up_read(&le->mutex);
 	if (free)
-		kmem_cache_free(ubi_ltree_slab, le);
+		kfree(le);
 }
 
 /**
@@ -292,7 +294,7 @@ static int leb_write_trylock(struct ubi_device *ubi, int vol_id, int lnum)
 		free = 0;
 	spin_unlock(&ubi->ltree_lock);
 	if (free)
-		kmem_cache_free(ubi_ltree_slab, le);
+		kfree(le);
 
 	return 1;
 }
@@ -321,7 +323,7 @@ static void leb_write_unlock(struct ubi_device *ubi, int vol_id, int lnum)
 
 	up_write(&le->mutex);
 	if (free)
-		kmem_cache_free(ubi_ltree_slab, le);
+		kfree(le);
 }
 
 /**
diff --git a/drivers/mtd/ubi/ubi.h b/drivers/mtd/ubi/ubi.h
index ef22f92..3cf1aa1 100644
--- a/drivers/mtd/ubi/ubi.h
+++ b/drivers/mtd/ubi/ubi.h
@@ -399,7 +399,6 @@ struct ubi_device {
 #endif
 };
 
-extern struct kmem_cache *ubi_ltree_slab;
 extern struct kmem_cache *ubi_wl_entry_slab;
 extern struct file_operations ubi_ctrl_cdev_operations;
 extern struct file_operations ubi_cdev_operations;



More information about the linux-mtd-cvs mailing list