0

I am getting messages such as:

kernel: Buffer I/O error on dev sdb1, logical block 107390598, async page read

In actuality, the USB HDD sdb has been removed: lsblk also shows no mention of sdb.

I executed umount -l on all its mounted filesystems until I got umount: /media/XXX: not mounted.

I'm getting filesystem errors: sdb1 is NTFS containing a loopback btrfs filesystem. (I did umount -l on the loopback filesystem before the containing filesystem)

Jul 11 11:14:13 svelte ntfs-3g[2744]: ntfs_attr_pread_i: ntfs_pread failed: Input/output error                                                                                 
Jul 11 11:14:13 svelte ntfs-3g[2744]: Failed to read vcn 0x0: Input/output error                                                 
Jul 11 11:14:13 svelte kernel: Buffer I/O error on dev sdb1, logical block 107390598, async page read                                                                                    
Jul 11 11:14:14 svelte sudo[26283]: pam_unix(sudo:session): session closed for user root                                
Jul 11 11:17:20 svelte ntfs-3g[2744]: ntfs_attr_pread_i: ntfs_pread failed: Input/output error                                      
Jul 11 11:17:20 svelte kernel: Buffer I/O error on dev sdb1, logical block 107390598, async page read                                                                   
Jul 11 11:17:20 svelte kernel: Buffer I/O error on dev sdb1, logical block 107390598, async page read                   
Jul 11 11:17:20 svelte kernel: blk_update_request: 40 callbacks suppressed                                              
Jul 11 11:17:20 svelte kernel: blk_update_request: I/O error, dev loop0, sector 420501056                                      
Jul 11 11:17:20 svelte kernel: btrfs_dev_stat_print_on_error: 40 callbacks suppressed                                               
Jul 11 11:17:20 svelte kernel: BTRFS error (device loop0): bdev /dev/loop1 errs: wr 0, rd 211, flush 0, corrupt 0, gen 0   

What's also weird is that the name of the loopback file is incorrect. It was actually /media/2TB/Backup/svelte-backup.btrfs, but showing up as:

$ losetup
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                   DIO
/dev/loop0         0      0         1  0 /Backup/svelte-backup.btrfs   0

I can't remove this loop device, even though losetup -d exits 0.

The only work around I know of is to reboot.

Is there a way to tell the kernel to forget about sdb? It's affecting btrfs because I believe the kernel is unhappy about having the same filesystem UUID "mounted" twice.

Tom Hale
  • 30,455

1 Answers1

1

I raised the issue losetup -d exits 0 when it doesn't succeed #484.

It seems the unmount didn't actually finish because of a process with working directory on the old FS mountpoint.

Lazy umount -l is dangerous.

Tom Hale
  • 30,455