aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/mtd/ubi/build.c14
-rw-r--r--drivers/mtd/ubi/cdev.c3
-rw-r--r--drivers/mtd/ubi/ubi.h3
3 files changed, 12 insertions, 8 deletions
diff --git a/drivers/mtd/ubi/build.c b/drivers/mtd/ubi/build.c
index 5877531f2268..8a4eb7c3e0f4 100644
--- a/drivers/mtd/ubi/build.c
+++ b/drivers/mtd/ubi/build.c
@@ -599,6 +599,7 @@ static int get_bad_peb_limit(const struct ubi_device *ubi, int max_beb_per1024)
599/** 599/**
600 * io_init - initialize I/O sub-system for a given UBI device. 600 * io_init - initialize I/O sub-system for a given UBI device.
601 * @ubi: UBI device description object 601 * @ubi: UBI device description object
602 * @max_beb_per1024: maximum expected number of bad PEB per 1024 PEBs
602 * 603 *
603 * If @ubi->vid_hdr_offset or @ubi->leb_start is zero, default offsets are 604 * If @ubi->vid_hdr_offset or @ubi->leb_start is zero, default offsets are
604 * assumed: 605 * assumed:
@@ -611,10 +612,8 @@ static int get_bad_peb_limit(const struct ubi_device *ubi, int max_beb_per1024)
611 * This function returns zero in case of success and a negative error code in 612 * This function returns zero in case of success and a negative error code in
612 * case of failure. 613 * case of failure.
613 */ 614 */
614static int io_init(struct ubi_device *ubi) 615static int io_init(struct ubi_device *ubi, int max_beb_per1024)
615{ 616{
616 const int max_beb_per1024 = CONFIG_MTD_UBI_BEB_LIMIT;
617
618 if (ubi->mtd->numeraseregions != 0) { 617 if (ubi->mtd->numeraseregions != 0) {
619 /* 618 /*
620 * Some flashes have several erase regions. Different regions 619 * Some flashes have several erase regions. Different regions
@@ -836,6 +835,7 @@ static int autoresize(struct ubi_device *ubi, int vol_id)
836 * @mtd: MTD device description object 835 * @mtd: MTD device description object
837 * @ubi_num: number to assign to the new UBI device 836 * @ubi_num: number to assign to the new UBI device
838 * @vid_hdr_offset: VID header offset 837 * @vid_hdr_offset: VID header offset
838 * @max_beb_per1024: maximum number of expected bad blocks per 1024 PEBs
839 * 839 *
840 * This function attaches MTD device @mtd_dev to UBI and assign @ubi_num number 840 * This function attaches MTD device @mtd_dev to UBI and assign @ubi_num number
841 * to the newly created UBI device, unless @ubi_num is %UBI_DEV_NUM_AUTO, in 841 * to the newly created UBI device, unless @ubi_num is %UBI_DEV_NUM_AUTO, in
@@ -846,7 +846,8 @@ static int autoresize(struct ubi_device *ubi, int vol_id)
846 * Note, the invocations of this function has to be serialized by the 846 * Note, the invocations of this function has to be serialized by the
847 * @ubi_devices_mutex. 847 * @ubi_devices_mutex.
848 */ 848 */
849int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num, int vid_hdr_offset) 849int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num,
850 int vid_hdr_offset, int max_beb_per1024)
850{ 851{
851 struct ubi_device *ubi; 852 struct ubi_device *ubi;
852 int i, err, ref = 0; 853 int i, err, ref = 0;
@@ -919,7 +920,7 @@ int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num, int vid_hdr_offset)
919 dbg_msg("sizeof(struct ubi_ainf_peb) %zu", sizeof(struct ubi_ainf_peb)); 920 dbg_msg("sizeof(struct ubi_ainf_peb) %zu", sizeof(struct ubi_ainf_peb));
920 dbg_msg("sizeof(struct ubi_wl_entry) %zu", sizeof(struct ubi_wl_entry)); 921 dbg_msg("sizeof(struct ubi_wl_entry) %zu", sizeof(struct ubi_wl_entry));
921 922
922 err = io_init(ubi); 923 err = io_init(ubi, max_beb_per1024);
923 if (err) 924 if (err)
924 goto out_free; 925 goto out_free;
925 926
@@ -1208,7 +1209,8 @@ static int __init ubi_init(void)
1208 1209
1209 mutex_lock(&ubi_devices_mutex); 1210 mutex_lock(&ubi_devices_mutex);
1210 err = ubi_attach_mtd_dev(mtd, UBI_DEV_NUM_AUTO, 1211 err = ubi_attach_mtd_dev(mtd, UBI_DEV_NUM_AUTO,
1211 p->vid_hdr_offs); 1212 p->vid_hdr_offs,
1213 CONFIG_MTD_UBI_BEB_LIMIT);
1212 mutex_unlock(&ubi_devices_mutex); 1214 mutex_unlock(&ubi_devices_mutex);
1213 if (err < 0) { 1215 if (err < 0) {
1214 ubi_err("cannot attach mtd%d", mtd->index); 1216 ubi_err("cannot attach mtd%d", mtd->index);
diff --git a/drivers/mtd/ubi/cdev.c b/drivers/mtd/ubi/cdev.c
index fb5567878181..619f9144f990 100644
--- a/drivers/mtd/ubi/cdev.c
+++ b/drivers/mtd/ubi/cdev.c
@@ -1010,7 +1010,8 @@ static long ctrl_cdev_ioctl(struct file *file, unsigned int cmd,
1010 * 'ubi_attach_mtd_dev()'. 1010 * 'ubi_attach_mtd_dev()'.
1011 */ 1011 */
1012 mutex_lock(&ubi_devices_mutex); 1012 mutex_lock(&ubi_devices_mutex);
1013 err = ubi_attach_mtd_dev(mtd, req.ubi_num, req.vid_hdr_offset); 1013 err = ubi_attach_mtd_dev(mtd, req.ubi_num, req.vid_hdr_offset,
1014 CONFIG_MTD_UBI_BEB_LIMIT);
1014 mutex_unlock(&ubi_devices_mutex); 1015 mutex_unlock(&ubi_devices_mutex);
1015 if (err < 0) 1016 if (err < 0)
1016 put_mtd_device(mtd); 1017 put_mtd_device(mtd);
diff --git a/drivers/mtd/ubi/ubi.h b/drivers/mtd/ubi/ubi.h
index c94612e67c47..2a2475b9ec54 100644
--- a/drivers/mtd/ubi/ubi.h
+++ b/drivers/mtd/ubi/ubi.h
@@ -693,7 +693,8 @@ int ubi_io_write_vid_hdr(struct ubi_device *ubi, int pnum,
693 struct ubi_vid_hdr *vid_hdr); 693 struct ubi_vid_hdr *vid_hdr);
694 694
695/* build.c */ 695/* build.c */
696int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num, int vid_hdr_offset); 696int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num,
697 int vid_hdr_offset, int max_beb_per1024);
697int ubi_detach_mtd_dev(int ubi_num, int anyway); 698int ubi_detach_mtd_dev(int ubi_num, int anyway);
698struct ubi_device *ubi_get_device(int ubi_num); 699struct ubi_device *ubi_get_device(int ubi_num);
699void ubi_put_device(struct ubi_device *ubi); 700void ubi_put_device(struct ubi_device *ubi);