Hi Denis,

On 2026-05-29T03:44:35, None <[email protected]> wrote:
> cmd: Add flush support for all blk devices
>
> Introduce flush subcommand for all blk devices to allow committing
> dirty data explicitly to the given block device.
>
> Signed-off-by: Denis Mukhin <[email protected]>
>
> cmd/blk_common.c | 14 ++++++++++++++
>  cmd/ide.c        |  1 +
>  cmd/nvme.c       |  1 +
>  cmd/pvblock.c    |  1 +
>  cmd/sata.c       |  1 +
>  cmd/scsi.c       |  1 +
>  cmd/usb.c        |  1 +
>  cmd/virtio.c     |  1 +
>  8 files changed, 21 insertions(+)

> diff --git a/cmd/blk_common.c b/cmd/blk_common.c
> @@ -37,6 +37,20 @@ int blk_common_cmd(int argc, char *const argv[], enum 
> uclass_id uclass_id,
> +             } else if (strncmp(argv[1], 'flush', 5) == 0) {
> +                     struct blk_desc *desc;
> +                     int ret;
> +
> +                     ret = blk_get_desc(uclass_id, *cur_devnump, &desc);
> +                     if (ret)
> +                             return CMD_RET_FAILURE;
> +
> +                     if (blk_dflush(desc)) {
> +                             printf("\nfailed to flush device %s\n", 
> if_name);
> +                             return CMD_RET_FAILURE;
> +                     }
> +
> +                     return CMD_RET_SUCCESS;
> +             }

Please print the return value from blk_dflush() and the device number
in the failure message - otherwise a user can't tell -ENOSYS from a
genuine I/O error. Compare with the erase arm just below which reports
the block count. You can use %dE to get an error string if the board
enables it.

Do you want to print something on success?

It is a bit misleading to suggest that all the commands support
'flush'. But I suppose we can worry about that later.

> diff --git a/cmd/blk_common.c b/cmd/blk_common.c
> @@ -37,6 +37,20 @@ int blk_common_cmd(int argc, char *const argv[], enum 
> uclass_id uclass_id,
> +             } else if (strncmp(argv[1], 'flush', 5) == 0) {

cmd/blkmap.c also routes through blk_common_cmd(), but dispatches via
U_BOOT_SUBCMD_MKENT() so flush never reaches this function unless you
add a matching subcmd entry. Either add it for consistency or call out
in the commit message that blkmap is intentionally excluded.

Regards,
Simon

Reply via email to