UFS 有哪些擦除命令

UFS擦除相关的操作有四种,Erase,discard,purge和wipe device.Erase和discard与eMMC erase和discard很接近,purge就类似eMMC中的Sanitize.Wipe device就是全盘擦除。

如果把擦除指令比作丢弃垃圾的话,erase就像丢弃日记本,丢弃了就不希望会再被找到。discard就像丢弃饮料瓶,只是不需要了而已,并不在意是否会被捡回。而purge就是下达指令,开始彻底粉碎已经丢弃的数据。

一 Erase

Erase时device所做的操作其实是解除映射,成功erase的LBA host就不能再读出其中的数据。

Erase最小size是write最小单元。

Erase靠unmap命令实现,另一个条件是bProvisioningType(unit descriptor) 的值要被设定为03h,即TPRZ(Thin Provisioning Return Zero)设定为1.

二 Discard

Discard和erase很像,它们的区别是discard过的LBA,host再去读有可能返回任何数据,包括原数据。

Discard CMD 也是靠unmap CMD实现。只是bProvisioningType(unit descriptor) 的值要被设定为02h,即TPRZ(Thin Provisioning Return Zero)设定为0.

三 Purge

Purge其实像是eMMC里的sanitize操作,是从物理上擦除那些unmapped的物理地址。当然这个过程中会伴随这GC 和数据搬移。

Purge option通过Query Request实现。是如下一个flag和一个attribute。

 

 R/WReset ValueDescription
fPurgeEnable flagWRITE ONLY0

1. =1时,enable purge operation

2. 只有当每一个lu的cmd queue都为空时才可以set flag

3.当purge操作结束或者有错误发生时,device会自动clear这个flag

4.host也可以clear flag如果要中断现在这个操作

bPurgeStatus AttributeREAD ONLY00h

00h:Idle(purge operation disabled)

01h:purge operation is in progress

02h:purge operation stopped prematurely by the host

03h:purge opeartion finished successfully

04h:purge opeartion failed due to logical unit queue not empty

05h:purge operation general fail

other values shall not be set.

在协议上的有关于purge操作各种情况下的描述和状态转换图,为避免过多文字,这里我总结了一个表格:

start statusdevice conditionoperationwaht will happenend status

fPurgeEnable = 00h

bPurgeStatus = 00h

LU queue is emptyset fPurgeEnableset success

fPurgeEnable = 01h

bPurgeStatus=01h

fPurgeEnable = 00h

bPurgeStatus = 00h

LU queue is not emptyset fPurgeEnableset fail

fpurgeEnable = 00h

bPurgeStatus = 04h

fPurgeEnable = 01h

bPurgeStatus = 01h

purge ongoingpurge finish successfully-

fPurgeEnable = 00h

bPurgeStatus = 03h

fPurgeEnable = 01h

bPurgeStatus = 01h

purge ongoingpurge general fail-

fPurgeEnable = 00h

bPurgeStatus = 05h

fPurgeEnable = 01h

bPurgeStatus = 01h

purge ongoing

clear

fPurgeEnable

purge stopped

fPurgeEnable = 00h

bPurgeStatus = 02h

bPurgeStatus = 02h/03h/04h/05h-host read-bPurgeStatus = 00h

四 wipe device

Wipe device的操作是通过FORMAT UNIT command来实现的。这个命令host应该不是很常用。

如果我们发了FORMAT UNIT command给Device Well Known logical unit,那么device就会format除RPMB Well-known LU之外的所有enabled LU.

 如果有某一个LU是Write Protect的,那么format unit命令就会执行失败。原数据不会被更改。

 

 

 

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值