summaryrefslogtreecommitdiffstats
path: root/drivers/mtd
diff options
context:
space:
mode:
authorArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2008-01-16 11:11:54 +0100
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2008-01-25 15:41:24 +0100
commitb9a06623d9d0c6dff758d525ceb0d9e2bba8f7d6 (patch)
tree9107daa5cf1aa527603c7d33d55ca45dbe760d5a /drivers/mtd
parent[MTD] [NAND] make s3c2410 indicate an error for multi-bit read errors (diff)
downloadlinux-b9a06623d9d0c6dff758d525ceb0d9e2bba8f7d6.tar.xz
linux-b9a06623d9d0c6dff758d525ceb0d9e2bba8f7d6.zip
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@arndb.de> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Diffstat (limited to 'drivers/mtd')
-rw-r--r--drivers/mtd/ubi/build.c28
-rw-r--r--drivers/mtd/ubi/eba.c12
-rw-r--r--drivers/mtd/ubi/ubi.h1
3 files changed, 8 insertions, 33 deletions
diff --git a/drivers/mtd/ubi/build.c b/drivers/mtd/ubi/build.c
index 8f1f9feb2d60..8b4573559dfe 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 85297cde4ac5..7c05c6e1abc7 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 ef22f922f580..3cf1aa1a0240 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;