mbox series

[v3,0/3] mtd: write support for minor-aligned partitions

Message ID 20220729091636.59287-1-hacks+kernel@slashdirt.org
Headers show
Series mtd: write support for minor-aligned partitions | expand

Message

Thibaut VARÈNE July 29, 2022, 9:16 a.m. UTC
This patch series enable write support for minor-aligned mtd partitions
on devices that support multiple erasesizes.

On supporting hardware, they enable RW operations on mtd partitions that
break "major" (largest) erasesize boundary (e.g. too small or not
correctly aligned) without sacrificing performance (i.e. forcing
everything to use 4K sectors). Finally, they address an historical FIXME
in mtdpart.c.

The following performance numbers were measured with v5.10 kernel on OpenWrt:
(CONFIG_MTD_SPI_NOR_USE_VARIABLE_ERASE=y forces the use of the new code path)

OpenWrt 5.10 ramips MT7621 w25q128jv 0xfc0000 firmware partition length
time mtd erase firmware

Without this patch:
MTD_SPI_NOR_USE_4K_SECTORS=n	|y
real    0m 50.86s		|2m 11.66s
user    0m 0.00s		|0m 0.00s
sys     0m 50.80s		|1m 56.20s
can write minor-aligned parts? N|Y

With this patch:
MTD_SPI_NOR_USE_VARIABLE_ERASE=n|y		|4K_SECTORS=y
real    0m 51.68s		|0m 50.85s	|2m 12.89s
user    0m 0.00s		|0m 0.00s	|0m 0.01s
sys     0m 46.94s		|0m 50.38s	|2m 12.46s
can write minor-aligned parts? N|Y		|Y


NB: This patchset was previously submitted as a monolithic patch (RFC[0],
v1[1]). While not submitted upstream v2 was however reviewed, tested and
accepted in OpenWrt, and backported into the upcoming 22.03 stable branch:
https://github.com/openwrt/openwrt/pull/3271

[0] 20210104122853.18428-1-git@johnthomson.fastmail.com.au
[1] 20210608040719.14431-1-git@johnthomson.fastmail.com.au

Changes v2 -> v3:
  - Split patch into incremental, functionally-separate changes.
  - Adjusted erasesize_minor assignment check in spi-nor/core.c
  - Addressed checkpatch warning on "printk(KERN_WARNING..."
  - Documented new sysfs attribute

Changes v1 -> v2:
  - Added mtdcore sysfs attribute for erasesize_minor
  - Removed finding minor erasesize for variable erase regions device,
    (untested and no response to RFC).
  - Moved IF_ENABLED() to guard setting erasesize_minor in spi-nor/core.c
  - Removed setting major erasesize to minor where partition boundaries
    require minor erase to be writable
  - Simplified minor boundary check by relying on minor being a factor
    of major

Changes RFC -> v1:
  - Fixed uninitialized variable smatch warning

Thibaut VARÈNE (3):
  mtd: mtdpart: write support for minor-aligned partitions
  mtd: spi-nor: set erasesize_minor in spi_nor_select_erase()
  mtd: spi-nor: allow overriding uniform erase

 Documentation/ABI/testing/sysfs-class-mtd |  8 ++++++
 drivers/mtd/mtdcore.c                     | 10 +++++++
 drivers/mtd/mtdpart.c                     | 35 ++++++++++++++++-------
 drivers/mtd/spi-nor/Kconfig               | 10 +++++++
 drivers/mtd/spi-nor/core.c                | 13 +++++++--
 include/linux/mtd/mtd.h                   |  2 ++
 6 files changed, 65 insertions(+), 13 deletions(-)


base-commit: e0dccc3b76fb35bb257b4118367a883073d7390e

Comments

Thibaut VARÈNE Aug. 9, 2022, 9:23 a.m. UTC | #1
Hi,

Since there were no objections in the past week, could you please consider merging this patch series?

Thanks,
Thibaut

> Le 29 juil. 2022 à 11:16, Thibaut VARÈNE <hacks+kernel@slashdirt.org> a écrit :
> 
> This patch series enable write support for minor-aligned mtd partitions
> on devices that support multiple erasesizes.
> 
> On supporting hardware, they enable RW operations on mtd partitions that
> break "major" (largest) erasesize boundary (e.g. too small or not
> correctly aligned) without sacrificing performance (i.e. forcing
> everything to use 4K sectors). Finally, they address an historical FIXME
> in mtdpart.c.
> 
> The following performance numbers were measured with v5.10 kernel on OpenWrt:
> (CONFIG_MTD_SPI_NOR_USE_VARIABLE_ERASE=y forces the use of the new code path)
> 
> OpenWrt 5.10 ramips MT7621 w25q128jv 0xfc0000 firmware partition length
> time mtd erase firmware
> 
> Without this patch:
> MTD_SPI_NOR_USE_4K_SECTORS=n	|y
> real    0m 50.86s		|2m 11.66s
> user    0m 0.00s		|0m 0.00s
> sys     0m 50.80s		|1m 56.20s
> can write minor-aligned parts? N|Y
> 
> With this patch:
> MTD_SPI_NOR_USE_VARIABLE_ERASE=n|y		|4K_SECTORS=y
> real    0m 51.68s		|0m 50.85s	|2m 12.89s
> user    0m 0.00s		|0m 0.00s	|0m 0.01s
> sys     0m 46.94s		|0m 50.38s	|2m 12.46s
> can write minor-aligned parts? N|Y		|Y
> 
> 
> NB: This patchset was previously submitted as a monolithic patch (RFC[0],
> v1[1]). While not submitted upstream v2 was however reviewed, tested and
> accepted in OpenWrt, and backported into the upcoming 22.03 stable branch:
> https://github.com/openwrt/openwrt/pull/3271
> 
> [0] 20210104122853.18428-1-git@johnthomson.fastmail.com.au
> [1] 20210608040719.14431-1-git@johnthomson.fastmail.com.au
> 
> Changes v2 -> v3:
>  - Split patch into incremental, functionally-separate changes.
>  - Adjusted erasesize_minor assignment check in spi-nor/core.c
>  - Addressed checkpatch warning on "printk(KERN_WARNING..."
>  - Documented new sysfs attribute
> 
> Changes v1 -> v2:
>  - Added mtdcore sysfs attribute for erasesize_minor
>  - Removed finding minor erasesize for variable erase regions device,
>    (untested and no response to RFC).
>  - Moved IF_ENABLED() to guard setting erasesize_minor in spi-nor/core.c
>  - Removed setting major erasesize to minor where partition boundaries
>    require minor erase to be writable
>  - Simplified minor boundary check by relying on minor being a factor
>    of major
> 
> Changes RFC -> v1:
>  - Fixed uninitialized variable smatch warning
> 
> Thibaut VARÈNE (3):
>  mtd: mtdpart: write support for minor-aligned partitions
>  mtd: spi-nor: set erasesize_minor in spi_nor_select_erase()
>  mtd: spi-nor: allow overriding uniform erase
> 
> Documentation/ABI/testing/sysfs-class-mtd |  8 ++++++
> drivers/mtd/mtdcore.c                     | 10 +++++++
> drivers/mtd/mtdpart.c                     | 35 ++++++++++++++++-------
> drivers/mtd/spi-nor/Kconfig               | 10 +++++++
> drivers/mtd/spi-nor/core.c                | 13 +++++++--
> include/linux/mtd/mtd.h                   |  2 ++
> 6 files changed, 65 insertions(+), 13 deletions(-)
> 
> 
> base-commit: e0dccc3b76fb35bb257b4118367a883073d7390e
> -- 
> 2.30.2
>
Tudor Ambarus Aug. 9, 2022, 3:45 p.m. UTC | #2
On 8/9/22 12:23, Thibaut VARÈNE wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
> 
> Hi,
> 
> Since there were no objections in the past week, could you please consider merging this patch series?
> 

Every patch submitted is considered for merging. Please be patient
and allow us time to review it. You can verify the status of any
SPI NOR patch at:
https://patchwork.ozlabs.org/project/linux-mtd/list/?series=&submitter=&state=&q=spi-nor&archive=&delegate=