[PATCH v3 1/2] ubi: Expose interface for detailed erase counters
Zhihao Cheng
chengzhihao1 at huawei.com
Fri Dec 6 19:02:22 PST 2024
在 2024/12/6 19:51, Rickard Andersson 写道:
> Using the ioctl command 'UBI_IOCECNFO' user space can obtain
> detailed erase counter information of all blocks of a device.
>
> Signed-off-by: Rickard Andersson <rickard.andersson at axis.com>
> ---
> include/uapi/mtd/ubi-user.h | 33 +++++++++++++++++++++++++++++++++
> 1 file changed, 33 insertions(+)
Reviewed-by: Zhihao Cheng <chengzhihao1 at huawei.com>
>
> diff --git a/include/uapi/mtd/ubi-user.h b/include/uapi/mtd/ubi-user.h
> index e1571603175e..aa872a41ffb9 100644
> --- a/include/uapi/mtd/ubi-user.h
> +++ b/include/uapi/mtd/ubi-user.h
> @@ -175,6 +175,8 @@
> #define UBI_IOCRPEB _IOW(UBI_IOC_MAGIC, 4, __s32)
> /* Force scrubbing on the specified PEB */
> #define UBI_IOCSPEB _IOW(UBI_IOC_MAGIC, 5, __s32)
> +/* Read detailed device erase counter information */
> +#define UBI_IOCECNFO _IOWR(UBI_IOC_MAGIC, 6, struct ubi_ecinfo_req)
>
> /* ioctl commands of the UBI control character device */
>
> @@ -412,6 +414,37 @@ struct ubi_rnvol_req {
> } ents[UBI_MAX_RNVOL];
> } __packed;
>
> +/**
> + * struct ubi_ecinfo_req - a data structure used for requesting and receiving
> + * erase block counter information from a UBI device.
> + *
> + * @start: index of first physical erase block to read (in)
> + * @length: number of erase counters to read (in)
> + * @read_length: number of erase counters that was actually read (out)
> + * @padding: reserved for future, not used, has to be zeroed
> + * @erase_counters: array of erase counter values (out)
> + *
> + * This structure is used to retrieve erase counter information for a specified
> + * range of PEBs on a UBI device.
> + * Erase counters are read from @start and attempts to read @length number of
> + * erase counters.
> + * The retrieved values are stored in the @erase_counters array. It is the
> + * responsibility of the caller to allocate enough memory for storing @length
> + * elements in the @erase_counters array.
> + * If a block is bad or if the erase counter is unknown the corresponding value
> + * in the array will be set to -1.
> + * The @read_length field will indicate the number of erase counters actually
> + * read. Typically @read_length will be limited due to memory or the number of
> + * PEBs on the UBI device.
> + */
> +struct ubi_ecinfo_req {
> + __s32 start;
> + __s32 length;
> + __s32 read_length;
> + __s8 padding[16];
> + __s32 erase_counters[];
> +} __packed;
> +
> /**
> * struct ubi_leb_change_req - a data structure used in atomic LEB change
> * requests.
>
More information about the linux-mtd
mailing list