首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件系统正在报告特定扇区上的写错误,即使在分区进一步移动之后也是如此。

文件系统正在报告特定扇区上的写错误,即使在分区进一步移动之后也是如此。
EN

Unix & Linux用户
提问于 2015-10-19 18:13:31
回答 1查看 3.8K关注 0票数 0

我面临以下问题: btrfs报告在设备/dev/sdd上为扇区128编写错误:

代码语言:javascript
复制
sd 6:0:0:0: [sdd] Invalid command failure
sd 6:0:0:0: [sdd] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
sd 6:0:0:0: [sdd] Sense Key : Illegal Request [current] 
sd 6:0:0:0: [sdd] Add. Sense: Invalid field in cdb
sd 6:0:0:0: [sdd] CDB: Write(10): 2a 08 00 00 00 80 00 00 08 00
end_request: critical target error, dev sdd, sector 128
BTRFS: lost page write due to I/O error on /dev/sdd
BTRFS: bdev /dev/sdd errs: wr 913238, rd 1, flush 150, corrupt 0, gen 0

我运行了badblocks /dev/sdd,它没有返回任何坏块。无论如何,我决定保持安全(在某种程度上),创建一个从2048扇区(默认)开始的分区:

代码语言:javascript
复制
# fdisk -l /dev/sdd
Device     Boot Start       End   Sectors   Size Id Type
/dev/sdd1        2048 234441647 234439600 111.8G 83 Linux

并重新添加驱动器到btrfs卷。我立刻又得到了同样的写错误(注意2176 = 2048 + 128):

代码语言:javascript
复制
sd 13:0:0:0: [sdd] Invalid command failure
sd 13:0:0:0: [sdd] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
sd 13:0:0:0: [sdd] Sense Key : Illegal Request [current] 
sd 13:0:0:0: [sdd] Add. Sense: Invalid field in cdb
sd 13:0:0:0: [sdd] CDB: Write(10): 2a 08 00 00 08 80 00 00 08 00
end_request: critical target error, dev sdd, sector 2176
BTRFS: lost page write due to I/O error on /dev/sdd1
BTRFS: bdev /dev/sdd1 errs: wr 12253, rd 0, flush 0, corrupt 0, gen 0

难道128和2176两个部门都是坏的吗?好吧,我已经重新运行了badblocks /dev/sdd (同样,它没有报告任何坏块),并将分区推远了:

代码语言:javascript
复制
# fdisk -l /dev/sdd
Device     Boot Start       End   Sectors   Size Id Type
/dev/sdd1        4096 234441647 234437552 111.8G 83 Linux

并重新创建btrfs卷。同样,“坏块”在同一个魔法区(4224 = 4096 + 128):

代码语言:javascript
复制
sd 6:0:0:0: [sdd] Invalid command failure
sd 6:0:0:0: [sdd] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
sd 6:0:0:0: [sdd] Sense Key : Illegal Request [current] 
sd 6:0:0:0: [sdd] Add. Sense: Invalid field in cdb
sd 6:0:0:0: [sdd] CDB: Write(10): 2a 08 00 00 10 80 00 00 08 00
end_request: critical target error, dev sdd, sector 4224
BTRFS: lost page write due to I/O error on /dev/sdd1
BTRFS: bdev /dev/sdd1 errs: wr 124433, rd 0, flush 0, corrupt 0, gen 0

我不相信巧合,也就是说,在魔术128和128之后,没有其他领域会失败,但具体的一个是有问题的。

什么是可以的?对我来说,这听起来像是内核中的一个bug。

更多信息:

  • Linux内核v3.16.0
  • /dev/sdd通过SATA适配器JMicron连接(ID 152 d:0567,看看它是什么样子):

dmesg:

代码语言:javascript
复制
sd 4:0:0:0: [sdb] Attached SCSI disk
scsi 6:0:0:0: Direct-Access     JMicron  Generic          0116 PQ: 0 ANSI: 6
sd 6:0:0:0: Attached scsi generic sg5 type 0
sd 6:0:0:0: [sdd] 234441648 512-byte logical blocks: (120 GB/111 GiB)
sd 6:0:0:0: [sdd] Write Protect is off
sd 6:0:0:0: [sdd] Mode Sense: 47 00 10 08
sd 6:0:0:0: [sdd] Write cache: enabled, read cache: enabled, supports DPO and FUA
sd 6:0:0:0: [sdd] Attached SCSI disk
EN

回答 1

Unix & Linux用户

发布于 2015-10-20 17:17:39

看来我找到了问题的根源。它确实与JMicron SATA桥连接,参见外部USB3 3磁盘出现“cdb中的无效字段”失败“修复 with 提交bf5c4136fa5ce471bdbf4cf59a813e32755fd 014包含在内核v3.18.6中,于2015-02-06发布.我试过以下几种内核:

  • 3.18.6-1~费用1 -不起作用
  • 3.19.3-1~费用1 -不起作用
  • 4.2.3-2~bpo8+1 -不管用。

实际的修复被提交为9fa62b1a31c96715 aef34f25000e882ed4ac4876,并在内核4.4.x中可用。

用于工作内核v4.4.x的dmesg如下所示:

代码语言:javascript
复制
scsi host7: uas
scsi 7:0:0:0: Direct-Access     JMicron  Generic          0116 PQ: 0 ANSI: 6
sd 7:0:0:0: [sdc] 234441648 512-byte logical blocks: (120 GB/111 GiB)
sd 7:0:0:0: [sdc] 4096-byte physical blocks
sd 7:0:0:0: [sdc] Write Protect is off
sd 7:0:0:0: [sdc] Mode Sense: 53 00 10 08
sd 7:0:0:0: [sdc] Disabling FUA
sd 7:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/237204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档