UBI: remove ubi_devices_cnt
This global variablea is not really needed, remove it Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
This commit is contained in:
parent
06b68ba156
commit
b96bf4c33d
|
@ -58,9 +58,6 @@ static int mtd_devs = 0;
|
||||||
/* MTD devices specification parameters */
|
/* MTD devices specification parameters */
|
||||||
static struct mtd_dev_param mtd_dev_param[UBI_MAX_DEVICES];
|
static struct mtd_dev_param mtd_dev_param[UBI_MAX_DEVICES];
|
||||||
|
|
||||||
/* Number of UBI devices in system */
|
|
||||||
int ubi_devices_cnt;
|
|
||||||
|
|
||||||
/* All UBI devices in system */
|
/* All UBI devices in system */
|
||||||
struct ubi_device *ubi_devices[UBI_MAX_DEVICES];
|
struct ubi_device *ubi_devices[UBI_MAX_DEVICES];
|
||||||
|
|
||||||
|
@ -566,26 +563,39 @@ static int attach_mtd_dev(const char *mtd_dev, int vid_hdr_offset,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check if we already have the same MTD device attached */
|
/* Check if we already have the same MTD device attached */
|
||||||
for (i = 0; i < ubi_devices_cnt; i++)
|
for (i = 0; i < UBI_MAX_DEVICES; i++)
|
||||||
if (ubi_devices[i]->mtd->index == mtd->index) {
|
ubi = ubi_devices[i];
|
||||||
|
if (ubi && ubi->mtd->index == mtd->index) {
|
||||||
ubi_err("mtd%d is already attached to ubi%d",
|
ubi_err("mtd%d is already attached to ubi%d",
|
||||||
mtd->index, i);
|
mtd->index, i);
|
||||||
err = -EINVAL;
|
err = -EINVAL;
|
||||||
goto out_mtd;
|
goto out_mtd;
|
||||||
}
|
}
|
||||||
|
|
||||||
ubi = ubi_devices[ubi_devices_cnt] = kzalloc(sizeof(struct ubi_device),
|
ubi = kzalloc(sizeof(struct ubi_device), GFP_KERNEL);
|
||||||
GFP_KERNEL);
|
|
||||||
if (!ubi) {
|
if (!ubi) {
|
||||||
err = -ENOMEM;
|
err = -ENOMEM;
|
||||||
goto out_mtd;
|
goto out_mtd;
|
||||||
}
|
}
|
||||||
|
|
||||||
ubi->ubi_num = ubi_devices_cnt;
|
|
||||||
ubi->mtd = mtd;
|
ubi->mtd = mtd;
|
||||||
|
|
||||||
|
/* Search for an empty slot in the @ubi_devices array */
|
||||||
|
ubi->ubi_num = -1;
|
||||||
|
for (i = 0; i < UBI_MAX_DEVICES; i++)
|
||||||
|
if (!ubi_devices[i]) {
|
||||||
|
ubi->ubi_num = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ubi->ubi_num == -1) {
|
||||||
|
ubi_err("only %d UBI devices may be created", UBI_MAX_DEVICES);
|
||||||
|
err = -ENFILE;
|
||||||
|
goto out_free;
|
||||||
|
}
|
||||||
|
|
||||||
dbg_msg("attaching mtd%d to ubi%d: VID header offset %d data offset %d",
|
dbg_msg("attaching mtd%d to ubi%d: VID header offset %d data offset %d",
|
||||||
ubi->mtd->index, ubi_devices_cnt, vid_hdr_offset, data_offset);
|
ubi->mtd->index, ubi->ubi_num, vid_hdr_offset, data_offset);
|
||||||
|
|
||||||
ubi->vid_hdr_offset = vid_hdr_offset;
|
ubi->vid_hdr_offset = vid_hdr_offset;
|
||||||
ubi->leb_start = data_offset;
|
ubi->leb_start = data_offset;
|
||||||
|
@ -619,7 +629,7 @@ static int attach_mtd_dev(const char *mtd_dev, int vid_hdr_offset,
|
||||||
if (err)
|
if (err)
|
||||||
goto out_detach;
|
goto out_detach;
|
||||||
|
|
||||||
ubi_msg("attached mtd%d to ubi%d", ubi->mtd->index, ubi_devices_cnt);
|
ubi_msg("attached mtd%d to ubi%d", ubi->mtd->index, ubi->ubi_num);
|
||||||
ubi_msg("MTD device name: \"%s\"", ubi->mtd->name);
|
ubi_msg("MTD device name: \"%s\"", ubi->mtd->name);
|
||||||
ubi_msg("MTD device size: %llu MiB", ubi->flash_size >> 20);
|
ubi_msg("MTD device size: %llu MiB", ubi->flash_size >> 20);
|
||||||
ubi_msg("physical eraseblock size: %d bytes (%d KiB)",
|
ubi_msg("physical eraseblock size: %d bytes (%d KiB)",
|
||||||
|
@ -648,7 +658,7 @@ static int attach_mtd_dev(const char *mtd_dev, int vid_hdr_offset,
|
||||||
wake_up_process(ubi->bgt_thread);
|
wake_up_process(ubi->bgt_thread);
|
||||||
}
|
}
|
||||||
|
|
||||||
ubi_devices_cnt += 1;
|
ubi_devices[ubi->ubi_num] = ubi;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
out_detach:
|
out_detach:
|
||||||
|
@ -664,7 +674,6 @@ out_free:
|
||||||
kfree(ubi);
|
kfree(ubi);
|
||||||
out_mtd:
|
out_mtd:
|
||||||
put_mtd_device(mtd);
|
put_mtd_device(mtd);
|
||||||
ubi_devices[ubi_devices_cnt] = NULL;
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -689,8 +698,6 @@ static void detach_mtd_dev(struct ubi_device *ubi)
|
||||||
#endif
|
#endif
|
||||||
kfree(ubi_devices[ubi_num]);
|
kfree(ubi_devices[ubi_num]);
|
||||||
ubi_devices[ubi_num] = NULL;
|
ubi_devices[ubi_num] = NULL;
|
||||||
ubi_devices_cnt -= 1;
|
|
||||||
ubi_assert(ubi_devices_cnt >= 0);
|
|
||||||
ubi_msg("mtd%d is detached from ubi%d", mtd_num, ubi_num);
|
ubi_msg("mtd%d is detached from ubi%d", mtd_num, ubi_num);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -770,10 +777,11 @@ module_init(ubi_init);
|
||||||
|
|
||||||
static void __exit ubi_exit(void)
|
static void __exit ubi_exit(void)
|
||||||
{
|
{
|
||||||
int i, n = ubi_devices_cnt;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < UBI_MAX_DEVICES; i++)
|
||||||
detach_mtd_dev(ubi_devices[i]);
|
if (ubi_devices[i])
|
||||||
|
detach_mtd_dev(ubi_devices[i]);
|
||||||
kmem_cache_destroy(ubi_wl_entry_slab);
|
kmem_cache_destroy(ubi_wl_entry_slab);
|
||||||
kmem_cache_destroy(ubi_ltree_slab);
|
kmem_cache_destroy(ubi_ltree_slab);
|
||||||
class_remove_file(ubi_class, &ubi_version);
|
class_remove_file(ubi_class, &ubi_version);
|
||||||
|
|
|
@ -60,7 +60,7 @@ static struct ubi_device *major_to_device(int major)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < ubi_devices_cnt; i++)
|
for (i = 0; i < UBI_MAX_DEVICES; i++)
|
||||||
if (ubi_devices[i] && MAJOR(ubi_devices[i]->cdev.dev) == major)
|
if (ubi_devices[i] && MAJOR(ubi_devices[i]->cdev.dev) == major)
|
||||||
return ubi_devices[i];
|
return ubi_devices[i];
|
||||||
BUG();
|
BUG();
|
||||||
|
|
|
@ -94,9 +94,6 @@ enum {
|
||||||
UBI_IO_BITFLIPS
|
UBI_IO_BITFLIPS
|
||||||
};
|
};
|
||||||
|
|
||||||
extern int ubi_devices_cnt;
|
|
||||||
extern struct ubi_device *ubi_devices[];
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct ubi_wl_entry - wear-leveling entry.
|
* struct ubi_wl_entry - wear-leveling entry.
|
||||||
* @rb: link in the corresponding RB-tree
|
* @rb: link in the corresponding RB-tree
|
||||||
|
@ -401,6 +398,7 @@ extern struct kmem_cache *ubi_ltree_slab;
|
||||||
extern struct kmem_cache *ubi_wl_entry_slab;
|
extern struct kmem_cache *ubi_wl_entry_slab;
|
||||||
extern struct file_operations ubi_cdev_operations;
|
extern struct file_operations ubi_cdev_operations;
|
||||||
extern struct file_operations ubi_vol_cdev_operations;
|
extern struct file_operations ubi_vol_cdev_operations;
|
||||||
|
extern struct ubi_device *ubi_devices[];
|
||||||
extern struct class *ubi_class;
|
extern struct class *ubi_class;
|
||||||
|
|
||||||
/* vtbl.c */
|
/* vtbl.c */
|
||||||
|
|
Loading…
Reference in New Issue