kernel: drop unneeded modification of mtd_add_partition function
In old days mtd_add_partition was checking for partitions overlapping
which was breaking our splitting feature. We had to modify this function
by adding an extra bool dup_check parameter. Upstream commit:
3a434f66e6da ("mtd: part: Remove partition overlap checks")
removed that check so we don't need our modification anymore.
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
SVN-Revision: 47748
			
			
This commit is contained in:
		| @@ -40,7 +40,7 @@ | |||||||
|   |   | ||||||
|  /* Our partition linked list */ |  /* Our partition linked list */ | ||||||
|  static LIST_HEAD(mtd_partitions); |  static LIST_HEAD(mtd_partitions); | ||||||
| @@ -47,13 +49,14 @@ struct mtd_part { | @@ -47,6 +49,8 @@ struct mtd_part { | ||||||
|  	struct list_head list; |  	struct list_head list; | ||||||
|  }; |  }; | ||||||
|   |   | ||||||
| @@ -49,27 +49,7 @@ | |||||||
|  /* |  /* | ||||||
|   * Given a pointer to the MTD object in the mtd_part structure, we can retrieve |   * Given a pointer to the MTD object in the mtd_part structure, we can retrieve | ||||||
|   * the pointer to that structure with this macro. |   * the pointer to that structure with this macro. | ||||||
|   */ | @@ -612,6 +616,7 @@ int mtd_add_partition(struct mtd_info *m | ||||||
|  #define PART(x)  ((struct mtd_part *)(x)) |  | ||||||
|   |  | ||||||
| - |  | ||||||
|  /* |  | ||||||
|   * MTD methods which simply translate the effective address and pass through |  | ||||||
|   * to the _real_ device. |  | ||||||
| @@ -579,8 +582,10 @@ static int mtd_add_partition_attrs(struc |  | ||||||
|  	return ret; |  | ||||||
|  } |  | ||||||
|   |  | ||||||
| -int mtd_add_partition(struct mtd_info *master, const char *name, |  | ||||||
| -		      long long offset, long long length) |  | ||||||
| + |  | ||||||
| +static int |  | ||||||
| +__mtd_add_partition(struct mtd_info *master, const char *name, |  | ||||||
| +		    long long offset, long long length, bool dup_check) |  | ||||||
|  { |  | ||||||
|  	struct mtd_partition part; |  | ||||||
|  	struct mtd_part *new; |  | ||||||
| @@ -612,6 +617,7 @@ int mtd_add_partition(struct mtd_info *m |  | ||||||
|  	mutex_unlock(&mtd_partitions_mutex); |  	mutex_unlock(&mtd_partitions_mutex); | ||||||
|   |   | ||||||
|  	add_mtd_device(&new->mtd); |  	add_mtd_device(&new->mtd); | ||||||
| @@ -77,20 +57,7 @@ | |||||||
|   |   | ||||||
|  	mtd_add_partition_attrs(new); |  	mtd_add_partition_attrs(new); | ||||||
|   |   | ||||||
| @@ -619,6 +625,12 @@ int mtd_add_partition(struct mtd_info *m | @@ -644,6 +649,35 @@ int mtd_del_partition(struct mtd_info *m | ||||||
|  } |  | ||||||
|  EXPORT_SYMBOL_GPL(mtd_add_partition); |  | ||||||
|   |  | ||||||
| +int mtd_add_partition(struct mtd_info *master, const char *name, |  | ||||||
| +		      long long offset, long long length) |  | ||||||
| +{ |  | ||||||
| +	return __mtd_add_partition(master, name, offset, length, true); |  | ||||||
| +} |  | ||||||
| + |  | ||||||
|  int mtd_del_partition(struct mtd_info *master, int partno) |  | ||||||
|  { |  | ||||||
|  	struct mtd_part *slave, *next; |  | ||||||
| @@ -644,6 +656,35 @@ int mtd_del_partition(struct mtd_info *m |  | ||||||
|  } |  } | ||||||
|  EXPORT_SYMBOL_GPL(mtd_del_partition); |  EXPORT_SYMBOL_GPL(mtd_del_partition); | ||||||
|   |   | ||||||
| @@ -126,7 +93,7 @@ | |||||||
|  /* |  /* | ||||||
|   * This function, given a master MTD object and a partition table, creates |   * This function, given a master MTD object and a partition table, creates | ||||||
|   * and registers slave MTD objects which are bound to the master according to |   * and registers slave MTD objects which are bound to the master according to | ||||||
| @@ -675,6 +716,7 @@ int add_mtd_partitions(struct mtd_info * | @@ -675,6 +709,7 @@ int add_mtd_partitions(struct mtd_info * | ||||||
|  		mutex_unlock(&mtd_partitions_mutex); |  		mutex_unlock(&mtd_partitions_mutex); | ||||||
|   |   | ||||||
|  		add_mtd_device(&slave->mtd); |  		add_mtd_device(&slave->mtd); | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org> | |||||||
|  |  | ||||||
| --- a/drivers/mtd/mtdpart.c | --- a/drivers/mtd/mtdpart.c | ||||||
| +++ b/drivers/mtd/mtdpart.c | +++ b/drivers/mtd/mtdpart.c | ||||||
| @@ -747,6 +747,30 @@ static struct mtd_part_parser *get_parti | @@ -740,6 +740,30 @@ static struct mtd_part_parser *get_parti | ||||||
|   |   | ||||||
|  #define put_partition_parser(p) do { module_put((p)->owner); } while (0) |  #define put_partition_parser(p) do { module_put((p)->owner); } while (0) | ||||||
|   |   | ||||||
| @@ -42,7 +42,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org> | |||||||
|  void register_mtd_parser(struct mtd_part_parser *p) |  void register_mtd_parser(struct mtd_part_parser *p) | ||||||
|  { |  { | ||||||
|  	spin_lock(&part_parser_lock); |  	spin_lock(&part_parser_lock); | ||||||
| @@ -875,6 +899,38 @@ int parse_mtd_partitions(struct mtd_info | @@ -868,6 +892,38 @@ int parse_mtd_partitions(struct mtd_info | ||||||
|  	return err; |  	return err; | ||||||
|  } |  } | ||||||
|   |   | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| --- a/drivers/mtd/mtdpart.c | --- a/drivers/mtd/mtdpart.c | ||||||
| +++ b/drivers/mtd/mtdpart.c | +++ b/drivers/mtd/mtdpart.c | ||||||
| @@ -656,6 +656,37 @@ int mtd_del_partition(struct mtd_info *m | @@ -649,6 +649,36 @@ int mtd_del_partition(struct mtd_info *m | ||||||
|  } |  } | ||||||
|  EXPORT_SYMBOL_GPL(mtd_del_partition); |  EXPORT_SYMBOL_GPL(mtd_del_partition); | ||||||
|   |   | ||||||
| @@ -23,11 +23,10 @@ | |||||||
| +		/* adjust partition offsets */ | +		/* adjust partition offsets */ | ||||||
| +		parts[i].offset += slave->offset; | +		parts[i].offset += slave->offset; | ||||||
| + | + | ||||||
| +		__mtd_add_partition(slave->master, | +		mtd_add_partition(slave->master, | ||||||
| +				    parts[i].name, | +				  parts[i].name, | ||||||
| +				    parts[i].offset, | +				  parts[i].offset, | ||||||
| +				    parts[i].size, | +				  parts[i].size); | ||||||
| +				    false); |  | ||||||
| +	} | +	} | ||||||
| + | + | ||||||
| +	kfree(parts); | +	kfree(parts); | ||||||
| @@ -38,7 +37,7 @@ | |||||||
|  #ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME |  #ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME | ||||||
|  #define SPLIT_FIRMWARE_NAME	CONFIG_MTD_SPLIT_FIRMWARE_NAME |  #define SPLIT_FIRMWARE_NAME	CONFIG_MTD_SPLIT_FIRMWARE_NAME | ||||||
|  #else |  #else | ||||||
| @@ -664,6 +695,7 @@ EXPORT_SYMBOL_GPL(mtd_del_partition); | @@ -657,6 +687,7 @@ EXPORT_SYMBOL_GPL(mtd_del_partition); | ||||||
|   |   | ||||||
|  static void split_firmware(struct mtd_info *master, struct mtd_part *part) |  static void split_firmware(struct mtd_info *master, struct mtd_part *part) | ||||||
|  { |  { | ||||||
| @@ -46,7 +45,7 @@ | |||||||
|  } |  } | ||||||
|   |   | ||||||
|  void __weak arch_split_mtd_part(struct mtd_info *master, const char *name, |  void __weak arch_split_mtd_part(struct mtd_info *master, const char *name, | ||||||
| @@ -678,6 +710,12 @@ static void mtd_partition_split(struct m | @@ -671,6 +702,12 @@ static void mtd_partition_split(struct m | ||||||
|  	if (rootfs_found) |  	if (rootfs_found) | ||||||
|  		return; |  		return; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| --- a/drivers/mtd/mtdpart.c | --- a/drivers/mtd/mtdpart.c | ||||||
| +++ b/drivers/mtd/mtdpart.c | +++ b/drivers/mtd/mtdpart.c | ||||||
| @@ -453,14 +453,12 @@ static struct mtd_part *allocate_partiti | @@ -454,14 +454,12 @@ static struct mtd_part *allocate_partiti | ||||||
|  	if (slave->offset == MTDPART_OFS_APPEND) |  	if (slave->offset == MTDPART_OFS_APPEND) | ||||||
|  		slave->offset = cur_offset; |  		slave->offset = cur_offset; | ||||||
|  	if (slave->offset == MTDPART_OFS_NXTBLK) { |  	if (slave->offset == MTDPART_OFS_NXTBLK) { | ||||||
| @@ -18,7 +18,7 @@ | |||||||
|  	} |  	} | ||||||
|  	if (slave->offset == MTDPART_OFS_RETAIN) { |  	if (slave->offset == MTDPART_OFS_RETAIN) { | ||||||
|  		slave->offset = cur_offset; |  		slave->offset = cur_offset; | ||||||
| @@ -687,6 +685,17 @@ run_parsers_by_type(struct mtd_part *sla | @@ -679,6 +677,17 @@ run_parsers_by_type(struct mtd_part *sla | ||||||
|  	return nr_parts; |  	return nr_parts; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -36,7 +36,7 @@ | |||||||
|  #ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME |  #ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME | ||||||
|  #define SPLIT_FIRMWARE_NAME	CONFIG_MTD_SPLIT_FIRMWARE_NAME |  #define SPLIT_FIRMWARE_NAME	CONFIG_MTD_SPLIT_FIRMWARE_NAME | ||||||
|  #else |  #else | ||||||
| @@ -986,6 +995,24 @@ int mtd_is_partition(const struct mtd_in | @@ -978,6 +987,24 @@ int mtd_is_partition(const struct mtd_in | ||||||
|  } |  } | ||||||
|  EXPORT_SYMBOL_GPL(mtd_is_partition); |  EXPORT_SYMBOL_GPL(mtd_is_partition); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ | |||||||
|  /* Our partition linked list */ |  /* Our partition linked list */ | ||||||
|  static LIST_HEAD(mtd_partitions); |  static LIST_HEAD(mtd_partitions); | ||||||
|  static DEFINE_MUTEX(mtd_partitions_mutex); |  static DEFINE_MUTEX(mtd_partitions_mutex); | ||||||
| @@ -235,13 +237,61 @@ static int part_erase(struct mtd_info *m | @@ -236,13 +238,61 @@ static int part_erase(struct mtd_info *m | ||||||
|  	struct mtd_part *part = PART(mtd); |  	struct mtd_part *part = PART(mtd); | ||||||
|  	int ret; |  	int ret; | ||||||
|   |   | ||||||
| @@ -71,7 +71,7 @@ | |||||||
|  	return ret; |  	return ret; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -249,7 +299,25 @@ void mtd_erase_callback(struct erase_inf | @@ -250,7 +300,25 @@ void mtd_erase_callback(struct erase_inf | ||||||
|  { |  { | ||||||
|  	if (instr->mtd->_erase == part_erase) { |  	if (instr->mtd->_erase == part_erase) { | ||||||
|  		struct mtd_part *part = PART(instr->mtd); |  		struct mtd_part *part = PART(instr->mtd); | ||||||
| @@ -97,7 +97,7 @@ | |||||||
|  		if (instr->fail_addr != MTD_FAIL_ADDR_UNKNOWN) |  		if (instr->fail_addr != MTD_FAIL_ADDR_UNKNOWN) | ||||||
|  			instr->fail_addr -= part->offset; |  			instr->fail_addr -= part->offset; | ||||||
|  		instr->addr -= part->offset; |  		instr->addr -= part->offset; | ||||||
| @@ -522,17 +590,20 @@ static struct mtd_part *allocate_partiti | @@ -523,17 +591,20 @@ static struct mtd_part *allocate_partiti | ||||||
|  	if ((slave->mtd.flags & MTD_WRITEABLE) && |  	if ((slave->mtd.flags & MTD_WRITEABLE) && | ||||||
|  	    mtd_mod_by_eb(slave->offset, &slave->mtd)) { |  	    mtd_mod_by_eb(slave->offset, &slave->mtd)) { | ||||||
|  		/* Doesn't start on a boundary of major erase size */ |  		/* Doesn't start on a boundary of major erase size */ | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| --- a/drivers/mtd/mtdpart.c | --- a/drivers/mtd/mtdpart.c | ||||||
| +++ b/drivers/mtd/mtdpart.c | +++ b/drivers/mtd/mtdpart.c | ||||||
| @@ -336,7 +336,14 @@ static int part_lock(struct mtd_info *mt | @@ -337,7 +337,14 @@ static int part_lock(struct mtd_info *mt | ||||||
|  static int part_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len) |  static int part_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len) | ||||||
|  { |  { | ||||||
|  	struct mtd_part *part = PART(mtd); |  	struct mtd_part *part = PART(mtd); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Rafał Miłecki
					Rafał Miłecki