summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/dev/ata/ata-disk.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/dev/ata/ata-disk.c b/sys/dev/ata/ata-disk.c
index 63a226c..bac091f 100644
--- a/sys/dev/ata/ata-disk.c
+++ b/sys/dev/ata/ata-disk.c
@@ -162,6 +162,9 @@ ad_attach(device_t dev)
adp->disk->d_unit = device_get_unit(dev);
if (atadev->param.support.command2 & ATA_SUPPORT_FLUSHCACHE)
adp->disk->d_flags = DISKFLAG_CANFLUSHCACHE;
+ if ((atadev->param.support.command2 & ATA_SUPPORT_CFA) ||
+ atadev->param.config == ATA_PROTO_CFA)
+ adp->disk->d_flags = DISKFLAG_CANDELETE;
snprintf(adp->disk->d_ident, sizeof(adp->disk->d_ident), "ad:%s",
atadev->param.serial);
disk_create(adp->disk, DISK_VERSION);
@@ -274,6 +277,12 @@ ad_strategy(struct bio *bp)
else
request->u.ata.command = ATA_WRITE;
break;
+ case BIO_DELETE:
+ request->flags = ATA_R_CONTROL;
+ request->u.ata.command = ATA_CFA_ERASE;
+ request->transfersize = 0;
+ request->donecount = bp->bio_bcount;
+ break;
case BIO_FLUSH:
request->u.ata.lba = 0;
request->u.ata.count = 0;
OpenPOWER on IntegriCloud