[Skiboot] [PATCH v2] libflash/file: greatly increase perf of file_erase()
Samuel Mendoza-Jonas
sam at mendozajonas.com
Tue Dec 11 13:15:06 AEDT 2018
On Mon, 2018-12-03 at 11:05 +1100, Stewart Smith wrote:
> Do 4096 byte chunks not 8 byte chunks. A ffspart invocation constructing
> a 64MB PNOR goes from a couple of seconds to ~0.1seconds with this
> patch.
>
> Signed-off-by: Stewart Smith <stewart at linux.ibm.com>
Reviewed-by: Samuel Mendoza-Jonas <sam at mendozajonas.com>
> ---
> v2: use git properly you git (i.e. don't remove a file)
>
> libflash/file.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/libflash/file.c b/libflash/file.c
> index 49f61778e946..72765b5777f9 100644
> --- a/libflash/file.c
> +++ b/libflash/file.c
> @@ -117,15 +117,17 @@ static int file_write(struct blocklevel_device *bl, uint64_t dst, const void *sr
> */
> static int file_erase(struct blocklevel_device *bl, uint64_t dst, uint64_t len)
> {
> - unsigned long long int d = ULLONG_MAX;
> + char buf[4096];
> int i = 0;
> int rc;
>
> + memset(buf, ~0, sizeof(buf));
> +
> while (len - i > 0) {
> - rc = file_write(bl, dst + i, &d, len - i > sizeof(d) ? sizeof(d) : len - i);
> + rc = file_write(bl, dst + i, buf, len - i > sizeof(buf) ? sizeof(buf) : len - i);
> if (rc)
> return rc;
> - i += len - i > sizeof(d) ? sizeof(d) : len - i;
> + i += (len - i > sizeof(buf)) ? sizeof(buf) : len - i;
> }
>
> return 0;
More information about the Skiboot
mailing list