On 2018-12-04 00:37, Tomasz Chmielewski wrote:
I'm trying to use btrfs on an external USB drive, without much success.
When the drive is connected for 2-3+ days, the filesystem gets remounted
readonly, with BTRFS saying "IO failure":
[77760.444607] BTRFS error (device sdb1): bad tree block start, want
378372096 have 0
[77760.550933] BTRFS error (device sdb1): bad tree block start, want
378372096 have 0
[77760.550972] BTRFS: error (device sdb1) in __btrfs_free_extent:6804:
errno=-5 IO failure
[77760.550979] BTRFS info (device sdb1): forced readonly
[77760.551003] BTRFS: error (device sdb1) in
btrfs_run_delayed_refs:2935: errno=-5 IO failure
[77760.553223] BTRFS error (device sdb1): pending csums is 4096
Note that there are no other kernel messages (i.e. that would indicate a
problem with disk, cable disconnection etc.).
The load on the drive itself can be quite heavy at times (i.e. 100% IO
for 1-2 h and more) - can it contribute to the problem (i.e. btrfs
thinks there is some timeout somewhere)?
Running 4.19.6 right now, but was experiencing the issue also with 4.18
kernels.
# btrfs device stats /data
[/dev/sda1].write_io_errs 0
[/dev/sda1].read_io_errs 0
[/dev/sda1].flush_io_errs 0
[/dev/sda1].corruption_errs 0
[/dev/sda1].generation_errs 0
It looks to me like the typical USB issues that are present with almost
all filesystems but only seem to be noticed by BTRFS because it does
more rigorous checking of data.
In short, USB is _crap_ for fixed storage, don't use it like that, even
if you are using filesystems which don't appear to complain.