[U-Boot] [RFC PATCH 2/2] mmc: add support for block device cache

Stephen Warren
2016-03-17T21:23:44Z

On 03/16/2016 03:40 PM, Eric Nelson wrote:
> Signed-off-by: Eric Nelson <eric@nelint.com>

Patch description.

> ---
> drivers/mmc/mmc.c | 10 +++++++++-
> drivers/mmc/mmc_write.c | 7 +++++++

Presumably it makes sense for the cache to work for IDE, SATA, USB,
SCSI, ... too. I wonder if it's possible to put this code somewhere more
central than mmc*.c so it automatically applies to
dev_desc->block_read() (see include/part.h). Perhaps not since each
implementation supplies its own block_read function directly, so the
cache calls do need to be duplicated everywhere.

> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
> *
> * SPDX-License-Identifier: GPL-2.0+
> */
> -
> #include <config.h>

Nit: unrelated change.

I think there is a missing call to cache_block_invalidate() when the MMC
device gets re-enumerated/re-initialized. The user would do something to
trigger this (e.g. mmc rescan) when they'd swapped an SD card out for
example.

Do you have any stats on how many operations this saves for typical FS
operations such as:

- Partition table type identification (with various types such as
MBR/DOS, GPT, ...)
- Partition enumeration
- Filesystem identification (with various filesystems such as FAT, ext, ...)
- File reads