aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/pending-4.19/411-mtd-partial_eraseblock_write.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/generic/pending-4.19/411-mtd-partial_eraseblock_write.patch')
-rw-r--r--target/linux/generic/pending-4.19/411-mtd-partial_eraseblock_write.patch13
1 files changed, 6 insertions, 7 deletions
diff --git a/target/linux/generic/pending-4.19/411-mtd-partial_eraseblock_write.patch b/target/linux/generic/pending-4.19/411-mtd-partial_eraseblock_write.patch
index f3a314ae02..f945122149 100644
--- a/target/linux/generic/pending-4.19/411-mtd-partial_eraseblock_write.patch
+++ b/target/linux/generic/pending-4.19/411-mtd-partial_eraseblock_write.patch
@@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
/* Our partition linked list */
static LIST_HEAD(mtd_partitions);
static DEFINE_MUTEX(mtd_partitions_mutex);
-@@ -220,6 +222,53 @@ static int part_erase(struct mtd_info *m
+@@ -220,11 +222,77 @@ static int part_erase(struct mtd_info *m
{
struct mtd_part *part = mtd_to_part(mtd);
int ret;
@@ -73,10 +73,9 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
instr->addr += part->offset;
ret = part->parent->_erase(part->parent, instr);
-@@ -227,6 +276,24 @@ static int part_erase(struct mtd_info *m
+ if (instr->fail_addr != MTD_FAIL_ADDR_UNKNOWN)
instr->fail_addr -= part->offset;
- instr->addr -= part->offset;
-
++
+ if (mtd->flags & MTD_ERASE_PARTIAL) {
+ if (partial_start) {
+ part->parent->_write(part->parent,
@@ -95,10 +94,10 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ kfree(erase_buf);
+ }
+
- return ret;
- }
+ instr->addr -= part->offset;
-@@ -539,19 +606,22 @@ static struct mtd_part *allocate_partiti
+ return ret;
+@@ -539,19 +607,22 @@ static struct mtd_part *allocate_partiti
remainder = do_div(tmp, wr_alignment);
if ((slave->mtd.flags & MTD_WRITEABLE) && remainder) {
/* Doesn't start on a boundary of major erase size */