diff options
-rw-r--r-- | drivers/mtd/ubi/build.c | 14 | ||||
-rw-r--r-- | drivers/mtd/ubi/cdev.c | 3 | ||||
-rw-r--r-- | drivers/mtd/ubi/ubi.h | 3 |
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 | */ |
614 | static int io_init(struct ubi_device *ubi) | 615 | static 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 | */ |
849 | int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num, int vid_hdr_offset) | 849 | int 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 */ |
696 | int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num, int vid_hdr_offset); | 696 | int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num, |
697 | int vid_hdr_offset, int max_beb_per1024); | ||
697 | int ubi_detach_mtd_dev(int ubi_num, int anyway); | 698 | int ubi_detach_mtd_dev(int ubi_num, int anyway); |
698 | struct ubi_device *ubi_get_device(int ubi_num); | 699 | struct ubi_device *ubi_get_device(int ubi_num); |
699 | void ubi_put_device(struct ubi_device *ubi); | 700 | void ubi_put_device(struct ubi_device *ubi); |