mtip32xx: abort secure erase operation if the device is mounted
PATCH 8/9 mtip32xx: abort secure erase operation if the device is mounted
Signed-off-by Sam Bradshaw <[email protected]>
Signed-off-by Asai Thambi S P <[email protected]>
--- drivers/block/mtip32xx/mtip32xx.c | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-)
drivers/block/mtip32xx/mtip32xx.c +12 -0
@@ -2147,6 +2147,18 @@ static int exec_drive_taskfile(struct driver_data *dd, fis.lba_hi, fis.device); +/* Check for secure erase while fs mounted */ +if ((fis.command ==ATA_CMD_SEC_ERASE_PREP ) || + (fis.command ==ATA_CMD_SEC_ERASE_UNIT ) || + (fis.command ==0xFC && fis.features ==0x12 )) { +if (dd->bdev && dd->bdev->bd_holders >0 ) { +dev_warn (&dd->pdev->dev,"Drive erase aborted due to non-zero refcount (%d)\n" , + dd->bdev->bd_holders); + err = -ERESTARTSYS ; + goto abort; + } + } +/* check for erase mode support during secure erase.*/ if ((fis.command ==ATA_CMD_SEC_ERASE_UNIT ) && outbuf && (outbuf[0 ] &MTIP_SEC_ERASE_MODE )) {
Signature · 1 line
1.7.1
Jens Axboe
maintainerQuoted 15 lines · Asai Thambi SP
Signed-off-by Sam Bradshaw <[email protected]>Signed-off-by Asai Thambi S P <[email protected]>--- drivers/block/mtip32xx/mtip32xx.c | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-)drivers/block/mtip32xx/mtip32xx.c +1
-0@@ -2147,6 +2147,18 @@ static int exec_drive_taskfile(struct driver_data *dd, fis.lba_hi, fis.device); +/* Check for secure erase while fs mounted */
drivers/block/mtip32xx/mtip32xx.c static int exec_drive_taskfile(struct driver_data *dd, · line 2160
Quoted 10 lines
drivers/block/mtip32xx/mtip32xx.c +10
-0+if ((fis.command ==ATA_CMD_SEC_ERASE_PREP ) || + (fis.command ==ATA_CMD_SEC_ERASE_UNIT ) || + (fis.command ==0xFC && fis.features ==0x12 )) { +if (dd->bdev && dd->bdev->bd_holders >0 ) { +dev_warn (&dd->pdev->dev,"Drive erase aborted due to non-zero refcount (%d)\n" , + dd->bdev->bd_holders); + err = -ERESTARTSYS ; + goto abort; + } + }
I don't like this. If you want to do something like this, why not claim before these commands and unclaim after? If the claim fails, fail the command.
Signature · 1 line
Jens Axboe
Quoted 15 lines · Jens Axboe
Quoted 14 lines · Asai Thambi SP
Signed-off-by Sam Bradshaw <[email protected]>Signed-off-by Asai Thambi S P <[email protected]>--- drivers/block/mtip32xx/mtip32xx.c | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-)drivers/block/mtip32xx/mtip32xx.c +0
-0@@ -2147,6 +2147,18 @@ static int exec_drive_taskfile(struct driver_data *dd, fis.lba_hi, fis.device);
Quoted 14 lines
drivers/block/mtip32xx/mtip32xx.c static int exec_drive_taskfile(struct driver_data *dd, · line 2160
Quoted 11 lines
drivers/block/mtip32xx/mtip32xx.c +11
-0+/* Check for secure erase while fs mounted */ +if ((fis.command ==ATA_CMD_SEC_ERASE_PREP ) || + (fis.command ==ATA_CMD_SEC_ERASE_UNIT ) || + (fis.command ==0xFC && fis.features ==0x12 )) { +if (dd->bdev && dd->bdev->bd_holders >0 ) { +dev_warn (&dd->pdev->dev,"Drive erase aborted due to non-zero refcount (%d)\n" , + dd->bdev->bd_holders); + err = -ERESTARTSYS ; + goto abort; + } + }I don't like this. If you want to do something like this, why not claim before these commands and unclaim after? If the claim fails, fail the command.
Not aware of bd_claim(). Thanks for the input. I will look into that.
--
Regards,
Asai