From: Ahmad Fatoum <a.fatoum@pengutronix.de>
To: Renaud Barbier <Renaud.Barbier@ametek.com>,
Barebox List <barebox@lists.infradead.org>
Subject: Re: nvme sanitize command
Date: Mon, 13 Jan 2025 15:36:54 +0100 [thread overview]
Message-ID: <757d7d40-a066-4dc7-80b0-b14dec016fbb@pengutronix.de> (raw)
In-Reply-To: <DM5PR07MB353218A5AE678C5F358831C5EC1F2@DM5PR07MB3532.namprd07.prod.outlook.com>
Hi Renaud,
On 13.01.25 15:03, Renaud Barbier wrote:
>> We do have ioctls on cdev in barebox, but we also have an actual erase
>> operation, so I prefer we use that instead.
>
> Below the option for sanitize command:
> # nvme sanitize --help
> Usage: nvme sanitize <device> [OPTIONS]
>
> Send a sanitize command.
>
> Options:
> [ --no-dealloc, -d ] --- No deallocate after sanitize.
> [ --oipbp, -i ] --- Overwrite invert pattern between
> passes.
> [ --owpass=<NUM>, -n <NUM> ] --- Overwrite pass count.
> [ --ause, -u ] --- Allow unrestricted sanitize exit.
> [ --sanact=<NUM>, -a <NUM> ] --- Sanitize action.
> [ --ovrpat=<NUM>, -p <NUM> ] --- Overwrite pattern.
Thanks, I had looked in nvme(1), but I should have looked in nvme-sanitize(1)
instead.
> Note I am talking about sanitize operation that is the whole device being erased i.e there is no start and end block to be specified.
So this is a single command that erases the whole device, but doesn't take
block offsets/length as arguments? Do you know what value the erased
data can have afterwards?
> Using erase would limit sanitisation to erasing the whole media
Isn't this what you want? Erase the whole device at once?
Anyway, the erase command can be extended as needed to take offset/length
or to change erasure type.
Currently erasing only part of the device is possible by adding calling
erase on a partition (perhaps allocated via addpart).
> and no possibility to use the other options such as overwrite where a pattern and a number of pass is specified.
Generally, I prefer not to copy the Linux style of device-specific ioctl
codes unless necessary.
For such very specific use cases, ioctl makes sense, yes.
cdev already supports ioctl, but block device doesn't, so the
natural step would be to add struct block_device_ops::ioctl,
which is called from struct block_device::cdev::ioctl.
I think we don't need that yet though, see below.
> Unless a way can be added to set features for sanitize.
> At present, erase is all I need so I will add the erase entry point with the sanitisation action being NVME_SANITIZE_SANACT_START_BLOCK_ERASE as default.
How about you implement erase in nvme, but check that size arguments indeed describe
the whole device: If it does, you do your sanitize operation and if it doesn't,
return -ENOSYS.
Would that work for you?
Cheers,
Ahmad
>
>
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
next prev parent reply other threads:[~2025-01-13 14:37 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-13 10:57 Renaud Barbier
2025-01-13 11:18 ` Ahmad Fatoum
2025-01-13 14:03 ` Renaud Barbier
2025-01-13 14:36 ` Ahmad Fatoum [this message]
2025-01-13 15:04 ` Renaud Barbier
2025-01-13 15:36 ` Ahmad Fatoum
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=757d7d40-a066-4dc7-80b0-b14dec016fbb@pengutronix.de \
--to=a.fatoum@pengutronix.de \
--cc=Renaud.Barbier@ametek.com \
--cc=barebox@lists.infradead.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox