lightnvm: introduce factory reset
authorMatias Bjørling <m@bjorling.me>
Tue, 12 Jan 2016 06:49:39 +0000 (07:49 +0100)
committerJens Axboe <axboe@fb.com>
Tue, 12 Jan 2016 15:21:18 +0000 (08:21 -0700)
commit8b4970c41f88ad772771f87b1c82c395248a84d8
tree4667e602605483b9be057e43ecbd57f4a2f0a047
parentb769207678176d590ea61ce7a64c9100925668b7
lightnvm: introduce factory reset

Now that a device can be managed using the system blocks, a method to
reset the device is necessary as well. This patch introduces logic to
reset the device easily to factory state and exposes it through an
ioctl.

The ioctl takes the following flags:

  NVM_FACTORY_ERASE_ONLY_USER
      By default all blocks, except host-reserved blocks are erased upon
      factory reset. Instead of this, only erase host-reserved blocks.
  NVM_FACTORY_RESET_HOST_BLKS
      Mark host-reserved blocks to be erased and set their type to free.
  NVM_FACTORY_RESET_GRWN_BBLKS
      Mark "grown bad blocks" to be erased and set their type to free.

Signed-off-by: Matias Bjørling <m@bjorling.me>
Signed-off-by: Jens Axboe <axboe@fb.com>
drivers/lightnvm/core.c
drivers/lightnvm/sysblk.c
include/linux/lightnvm.h
include/uapi/linux/lightnvm.h