From: Brian Norris <computersforpeace@gmail.com>
To: Zach Brown <zach.brown@ni.com>
Cc: dwmw2@infradead.org, boris.brezillon@free-electrons.com,
richard@nod.at, dedekind1@gmail.com,
linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: Re: [RESEND PATCH v5 1/5] mtd: introduce function max_bad_blocks
Date: Tue, 22 Nov 2016 10:48:09 -0800 [thread overview]
Message-ID: <20161122184809.GB77253@google.com> (raw)
In-Reply-To: <1479757899-6849-2-git-send-email-zach.brown@ni.com>
A few small comments.
On Mon, Nov 21, 2016 at 01:51:35PM -0600, Zach Brown wrote:
> From: Jeff Westfahl <jeff.westfahl@ni.com>
>
> If implemented, 'max_bad_blocks' returns the maximum number of bad
> blocks to reserve for an MTD. An implementation for NAND is coming soon.
>
> Signed-off-by: Jeff Westfahl <jeff.westfahl@ni.com>
> Signed-off-by: Zach Brown <zach.brown@ni.com>
> Acked-by: Boris Brezillon <boris.brezillon@free-electron.com>
> ---
> drivers/mtd/mtdpart.c | 12 ++++++++++++
> include/linux/mtd/mtd.h | 11 +++++++++++
> 2 files changed, 23 insertions(+)
>
> diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
> index fccdd49..565f0dd 100644
> --- a/drivers/mtd/mtdpart.c
> +++ b/drivers/mtd/mtdpart.c
> @@ -349,6 +349,16 @@ static const struct mtd_ooblayout_ops part_ooblayout_ops = {
> .free = part_ooblayout_free,
> };
>
> +static int part_max_bad_blocks(struct mtd_info *mtd, loff_t ofs, size_t len)
> +{
> + struct mtd_part *part = mtd_to_part(mtd);
> +
> + if ((len + ofs) > mtd->size)
> + return -EINVAL;
Normally you want the bounds checking in the top-level API, and that
should be enough for the partitions as well. Also, what about 'ofs < 0'?
> + return part->master->_max_bad_blocks(part->master,
> + ofs + part->offset, len);
> +}
> +
> static inline void free_partition(struct mtd_part *p)
> {
> kfree(p->mtd.name);
> @@ -481,6 +491,8 @@ static struct mtd_part *allocate_partition(struct mtd_info *master,
> if (master->_put_device)
> slave->mtd._put_device = part_put_device;
>
> + if (master->_max_bad_blocks)
> + slave->mtd._max_bad_blocks = part_max_bad_blocks;
Nit: add an extra blank line after? Also might make sense to stick this
up with the other bad-block-related assignments (after _block_markbad =
...).
> slave->mtd._erase = part_erase;
> slave->master = master;
> slave->offset = part->offset;
> diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h
> index 13f8052..c02d3c2 100644
> --- a/include/linux/mtd/mtd.h
> +++ b/include/linux/mtd/mtd.h
> @@ -322,6 +322,7 @@ struct mtd_info {
> int (*_block_isreserved) (struct mtd_info *mtd, loff_t ofs);
> int (*_block_isbad) (struct mtd_info *mtd, loff_t ofs);
> int (*_block_markbad) (struct mtd_info *mtd, loff_t ofs);
> + int (*_max_bad_blocks) (struct mtd_info *mtd, loff_t ofs, size_t len);
> int (*_suspend) (struct mtd_info *mtd);
> void (*_resume) (struct mtd_info *mtd);
> void (*_reboot) (struct mtd_info *mtd);
> @@ -402,6 +403,16 @@ int mtd_wunit_to_pairing_info(struct mtd_info *mtd, int wunit,
> int mtd_pairing_info_to_wunit(struct mtd_info *mtd,
> const struct mtd_pairing_info *info);
> int mtd_pairing_groups(struct mtd_info *mtd);
> +
> +static inline int mtd_max_bad_blocks(struct mtd_info *mtd,
> + loff_t ofs, size_t len)
> +{
Bounds checks here?
Brian
> + if (mtd->_max_bad_blocks)
> + return mtd->_max_bad_blocks(mtd, ofs, len);
> +
> + return -ENOTSUPP;
> +}
> +
> int mtd_erase(struct mtd_info *mtd, struct erase_info *instr);
> int mtd_point(struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen,
> void **virt, resource_size_t *phys);
> --
> 2.7.4
>
next prev parent reply other threads:[~2016-11-22 18:48 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-21 19:51 [RESEND PATCH v5 0/5] mtd: use ONFI bad blocks per LUN to calculate UBI bad PEB limit Zach Brown
2016-11-21 19:51 ` [RESEND PATCH v5 1/5] mtd: introduce function max_bad_blocks Zach Brown
2016-11-22 18:48 ` Brian Norris [this message]
2016-11-21 19:51 ` [RESEND PATCH v5 2/5] mtd: ubi: use 'max_bad_blocks' to compute bad_peb_limit if available Zach Brown
2016-11-22 18:42 ` Brian Norris
2016-11-25 13:37 ` Richard Weinberger
2016-11-25 14:03 ` Richard Weinberger
2016-11-22 18:50 ` Brian Norris
2016-11-21 19:51 ` [RESEND PATCH v5 3/5] mtd: nand: Add max_bb_per_die and blocks_per_die fields to nand_chip Zach Brown
2016-11-21 19:51 ` [RESEND PATCH v5 4/5] mtd: nand: implement 'max_bad_blocks' mtd function Zach Brown
2016-11-22 18:55 ` Brian Norris
2016-11-21 19:51 ` [RESEND PATCH v5 5/5] mtd: nand: set max_bb_per_die and blocks_per_die for ONFI compliant chips Zach Brown
2016-11-22 9:37 ` [RESEND PATCH v5 0/5] mtd: use ONFI bad blocks per LUN to calculate UBI bad PEB limit Boris Brezillon
2016-11-22 9:53 ` Richard Weinberger
2016-11-22 18:58 ` Brian Norris
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20161122184809.GB77253@google.com \
--to=computersforpeace@gmail.com \
--cc=boris.brezillon@free-electrons.com \
--cc=dedekind1@gmail.com \
--cc=dwmw2@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=richard@nod.at \
--cc=zach.brown@ni.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.