This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/TUSB9261:BOT模式下的TRIM支持

Guru**** 2455560 points
Other Parts Discussed in Thread: TUSB9261

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/597146/linux-tusb9261-trim-support-in-bot-mode

部件号:TUSB9261

工具/软件:Linux

您好,


我们正在使用带有ext4的Linux 3.14 ,在TUSB9261 (v 1.05 )的后面运行mSATA设备。 USB存储驱动程序告诉我们设备不支持write same SCSI命令。

仍有UNMAP SCSI命令可以激活TRIM。 但是,TUSB固件是否将此命令转换为TRIM ATA命令并提供此支持?

在BOT模式下如何触发微调是否还有其他想法?

感谢每一个提示!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    unmap命令将对TRIM有效。   哪个程序正在使用写相同?  我只看到使用了UNMAP。  

    此致,

    Brian

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [报价用户="Brian Quach"]

    unmap命令将对TRIM有效。   

    [/引述]

    好的,谢谢。 同时,我们发现SG_VPD (来自SG3_utils)报告支持UNMAP命令。 但是,Linux内核不会执行SCSI命令来查询此信息。 嗯。 我们可能需要修补内核。

    [报价用户="Brian Quach"]

    哪个程序正在使用写相同?  我只看到使用了UNMAP。

    [/引述]

    如果SCSI设备报告支持此命令,内核将执行此操作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们现在已经修补了内核,以支持TUSB9261后面mSATA的UNMAP命令。 但是,TUSB9261固件不会在响应Read Capacity (16)命令时设置LBPME (逻辑块配置管理已启用)位,因此内核不会继续使用UNMAP命令。 是否有支持此功能的固件? 否则,我们必须将其硬编码到内核中(这是某种违反SCSI标准的行为)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们的逻辑块配置VPD页面报告仅支持UNMAP命令。  LBPWS和LBPWS10位设置为零,因此主机不应使用相同写入。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    设置LBPME位比修改单个位更容易。 SCSI/ATA Translation - 3 rev1规范在实施方面不明确,我不确定如何确定资源与精简配置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    SAS-3 Rev 7 Draft和SAS-4 Rev 6 Draft非常清楚:

    LBPME:
    如果ATA识别设备数据日志修剪支持的位设置为1,并且ATA识别设备数据日志驱动器支持的位设置为1,则此位应设置为1。 否则,此位应设置为零。

    请参阅
    standards.incits.org/.../eb-2014-00740-Public-review- register-INCITS-517-201x-Comments-due-11-24-2014.pdf0.074万 register-INCITS-517-201x-Comments-due-11-24-2014.pdf</s>2014.
    standards.incits.org/.../eb-2016-00683-Public-review-register-INCITS-491-SAT-4-Comments-due-1-31-2017.pdf</s>0.0683万 2017.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您提供信息。  我没有这种更新的规格版本。  是否可以测试连接的固件?

    e2e.ti.com/.../TUSB926x_5F00_Firmware_5F00_v1.06_5F00_LBPME_5F00_fix.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    忽略最后提供的固件。  我在其中一个VPD页位中发现了拼写错误。  我更正了它并增加了对RZAT的支持。  尝试一下这一项,让我知道结果。

    e2e.ti.com/.../0284.TUSB926x_5F00_Firmware_5F00_vv1.06_5F00_LBPME_5F00_fix2.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您提供新的FW。 遗憾的是,它仍返回LBPME=0,带有我们的SSD (使用sg_readcap -l /dev/sg0选中)。 无论如何,我们已经修补了Linux内核,ext4上的fstrim现在可以使用UNMAP命令生成USB Urbs。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这很奇怪。  我正在根据您提供的规格设置位。  您是否有来自TUSB9261的UART调试日志和/或可共享的USB跟踪?  即使您已经安装了修补程序,我也希望您能解决问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很遗憾,我们无法提供UART日志。 我们已对两个SSD进行测试,但两个SSD都报告不支持LBPME。 您是否看到不同的输出?

    #./sg_readcap -l /dev/sg0
    读取容量结果:
      保护:Prot_en=0,p_type=0,p_I_指数=0
      逻辑块配置:lbpme=0,lbprz=0
      最后一个逻辑块地址=2.50069679亿 (0xee7c2af),逻辑块数=2.5006968亿
      逻辑块长度=512字节
      每个物理块的逻辑块指数=0
      最低对齐逻辑块地址=0
    因此:
      设备大小:12.8035万676160字节67.616万字节,12.2104万.3 MIB,128.04 GB

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们测试 了以前提供 的新固件(TUSB926x_Firmware_v1.06_LBPME_fix2.zip),它按预期工作。   设置LBPME位是因为SSD驱动器支持TRIM。  您拥有的SSD驱动器不能正确设置TRIM支持位以响应识别设备命令。

    root@swatubuntu16-xps-8700:~# sg_readcap -l /dev/sg1.

    读取容量结果:

      保护:Prot_en=0,p_type=0,p_I_指数=0

      逻辑块配置:lbpme=1,lbprz=0

      最后一个逻辑块地址=2.50069679亿 (0xee7c2af),逻辑块数=2.5006968亿

      逻辑块长度=512字节

      每个物理块的逻辑块指数=0

      最低对齐逻辑块地址=0

    因此:

      设备大小:12.8035万676160字节67.616万字节,12.2104万.3 MIB,128.04 GB

    来自TUSB9261的UART输出:

    [0000000461]===================================================
    [0000000461]             标识设备信息
    [0000000461]===================================================
    [0000000461]
    [0000000461]  型号: Toshiba THNSNS128GCSP
    [0000000461]  FW修订版:TA4ABBF0
    [0000000461]  串行:925S10URT2JY
    [0000000461]  饰件支架:是[drat
    [0000000461]
    [0000000461]  规格符合性:ATA-7
    [0000000461]  可移动介质:否
    [0000000461]  UDMA模式= 0x207f
    [0000000461]  PIO模式= 0x0003
    [0000000461]
    [0000000461]  lba48:是
    [0000000461]  最大LBA = 0x0万 0ee7c2b0
    [0000000461]  写入FAA:是
    [0000000461]  全球通用名称:不适用
    [0000000461]
    [0000000461]  SATA速度:第3代
    [0000000461]  NCQ支持:是
    [0000000461]  队列深度= 31
    [0000000461]
    [0000000461]  逻辑扇区大小=512字节
    [0000000461]  物理扇区大小=512字节
    [0000000461]  逻辑扇区偏移量=0
    [0000000462]
    [0000000462]=================================================

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    MKO,

    在我们的测试中,这似乎工作正常。  您是否有任何进一步的反馈?

    此致,
    Brian

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗯。 很抱歉回复太晚。 很明显,我们所有的mSATA磁盘都无法正确报告TRIM支持。 例如innodisk mSATA 3ME3 128 GB。 这是一个遗憾。

    尽管如此,感谢您的帮助!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    实时使用ATA TRIM命令在每种情况下都具有更高的效率。 使用fstrim,您会遇到两种情况。 要么是在删除过多次之后运行该程序,而某些写入操作必须执行整个页面擦除-写入周期。 或者,它运行太频繁,内核发送重复的TRIM命令,需要检查和忽略这些命令。

    我唯一的假设是Linux Mint安装程序无法检测到SSD。