Re: [PATCH] mtd: Add sysfs attribute for mtd OOB available size

Boris Brezillon
2018-04-02T12:15:05Z

Hi Xiaolei,

On Mon, 2 Apr 2018 16:20:10 +0800
Xiaolei Li <xiaolei.li-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org> wrote:

> Expose mtd OOB available size by sysfs file. Then users can get available
> OOB size by accessing /sys/class/mtd/mtdX/oobavail.

May I ask why you need to expose that? I'm not against exposing new
things through sysfs, but since this is part of the ABI, I'd like to be
sure we actually need it.

Regards,

Boris

>
> Signed-off-by: Xiaolei Li <xiaolei.li-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
> ---
> Documentation/ABI/testing/sysfs-class-mtd | 8 ++++++++
> drivers/mtd/mtdcore.c | 10 ++++++++++
> 2 files changed, 18 insertions(+)
>
> diff --git a/Documentation/ABI/testing/sysfs-class-mtd b/Documentation/ABI/testing/sysfs-class-mtd
> index f34e5923..3bc7c0a 100644
> --- a/Documentation/ABI/testing/sysfs-class-mtd
> +++ b/Documentation/ABI/testing/sysfs-class-mtd
> @@ -232,3 +232,11 @@ Description:
> of the parent (another partition or a flash device) in bytes.
> This attribute is absent on flash devices, so it can be used
> to distinguish them from partitions.
> +
> +What: /sys/class/mtd/mtdX/oobavail
> +Date: April 2018
> +KernelVersion: 4.16
> +Contact: linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
> +Description:
> + Number of bytes available for a client to place data into
> + the out of band area.
> diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
> index 807d17d..99d9352 100644
> --- a/drivers/mtd/mtdcore.c
> +++ b/drivers/mtd/mtdcore.c
> @@ -210,6 +210,15 @@ static ssize_t mtd_oobsize_show(struct device *dev,
> }
> static DEVICE_ATTR(oobsize, S_IRUGO, mtd_oobsize_show, NULL);
>
> +static ssize_t mtd_oobavail_show(struct device *dev,
> + struct device_attribute *attr, char *buf)
> +{
> + struct mtd_info *mtd = dev_get_drvdata(dev);
> +
> + return snprintf(buf, PAGE_SIZE, "%lu\n", (unsigned long)mtd->oobavail);
> +}
> +static DEVICE_ATTR(oobavail, S_IRUGO, mtd_oobavail_show, NULL);
> +
> static ssize_t mtd_numeraseregions_show(struct device *dev,
> struct device_attribute *attr, char *buf)
> {
> @@ -327,6 +336,7 @@ static ssize_t mtd_bbtblocks_show(struct device *dev,
> &dev_attr_writesize.attr,
> &dev_attr_subpagesize.attr,
> &dev_attr_oobsize.attr,
> + &dev_attr_oobavail.attr,
> &dev_attr_numeraseregions.attr,
> &dev_attr_name.attr,
> &dev_attr_ecc_strength.attr,

--
Boris Brezillon, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering