Message ID | 20241121102157.3498056-1-rickard.andersson@axis.com |
---|---|
State | New |
Headers | show |
Series | [1/2] ubi: Expose interface for reading erase counters | expand |
Rickard, ----- Ursprüngliche Mail ----- > Von: "Rickard X Andersson" <rickard.andersson@axis.com> > An: "richard" <richard@nod.at>, "chengzhihao1" <chengzhihao1@huawei.com>, "linux-mtd" <linux-mtd@lists.infradead.org>, > "rickard314 andersson" <rickard314.andersson@gmail.com> > CC: "Rickard X Andersson" <rickard.andersson@axis.com>, "kernel" <kernel@axis.com> > Gesendet: Donnerstag, 21. November 2024 11:21:56 > Betreff: [PATCH 1/2] ubi: Expose interface for reading erase counters > Using the ioctl command 'UBI_IOCECNFO' user space can obtain mean > and max erase counters of a device. If fastmap is enabled also erase > counter information of that area and its complementary area is > provided. the idea was having an ioctl interface to get the EC counters of all PEBs. Such that userspace can do the mean/max/min calculations on it's own. That way the kernel interface is clean and generic. Userspace can interpret the data as it needs. Thanks, //richard
diff --git a/include/uapi/mtd/ubi-user.h b/include/uapi/mtd/ubi-user.h index e1571603175e..00cc8a083675 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 information */ +#define UBI_IOCECNFO _IOR(UBI_IOC_MAGIC, 6, struct ubi_ecinfo_res) /* ioctl commands of the UBI control character device */ @@ -470,4 +472,27 @@ struct ubi_blkcreate_req { __s8 padding[128]; } __packed; +/** + * struct ubi_ecinfo_res - a data structure used in UBI device erase count + * information responses. + * + * @max_ec: Max physical erase block erase counter value of whole UBI device + * @mean_ec: Mean physical erase block erase counter value of whole UBI device + * @max_ec_fastmap: Max physical erase block erase counter value of fastmap area + * @mean_ec_fastmap: Mean physical erase block erase counter value of fastmap area + * @max_ec_data: Max physical erase block erase counter value of data area + * @mean_ec_data: Mean physical erase block erase counter value of data area + * + * @padding: reserved for future, not used, has to be zeroed + */ +struct ubi_ecinfo_res { + __s32 max_ec; + __s32 mean_ec; + __s32 max_ec_fastmap; + __s32 mean_ec_fastmap; + __s32 max_ec_data; + __s32 mean_ec_data; + __s8 padding[64]; +} __packed; + #endif /* __UBI_USER_H__ */
Using the ioctl command 'UBI_IOCECNFO' user space can obtain mean and max erase counters of a device. If fastmap is enabled also erase counter information of that area and its complementary area is provided. Signed-off-by: Rickard Andersson <rickard.andersson@axis.com> --- include/uapi/mtd/ubi-user.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)