Why is my block device busy?

Adam Trhon adam.trhon at tbs-biometrics.com
Mon Jan 20 07:51:15 EST 2020


Hello,

I have an embedded x86 machine with Linux 5.2.21. The system is
built using OpenEmbedded. When I update the machine from a live USB
(/dev/sda), I override the whole internal memory (/dev/mmcblk1), and
then I get this error:

fdisk: WARNING: rereading partition table failed, kernel still uses old table: Device or resource busy

(I use fdisk for notifying kernel about the changes).

To find out where it is mounted I run

mount | grep mmc

before overwriting /dev/mmcblk1, but it prints nothing. So I run

dmesg | grep mmc

and I see this:

(... a lot of kernel prints ...)
Freeing unused kernel image memory: 1000K
Write protecting kernel text and read-only data: 14468k
NX-protecting the kernel data: 7000k
Run /init as init process
EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
(... a lot of kernel prints ...)

Next I modified the ext driver to print stack when mounting, and I got:

Call Trace:
 ? ext4_calculate_overhead+0x520/0x520
 mount_bdev+0x15a/0x180
 ? mount_bdev+0x15a/0x180
 ? ext4_nfs_get_inode+0x50/0x50
 ext4_mount+0x15/0x20
 ? ext4_calculate_overhead+0x520/0x520
 legacy_get_tree+0x22/0x50
 vfs_get_tree+0x24/0xe0
 do_mount+0x5e3/0x880
 ksys_mount+0xa1/0xb0
 sys_mount+0x1c/0x20
 do_fast_syscall_32+0x82/0x230
 entry_SYSENTER_32+0x6b/0xbe

but I don't see anything that makes sense to me. What causes the
device to be busy?

Thank you
Adam


-- 
Ing. Adam Trhoň, Software Engineer
Touchless Biometric Systems s.r.o. | 
Palackého třída 180/44 | 61200 Brno | CZECH REPUBLIC | 
Mobile: +42(0) 721 565 113 | tbs-biometrics.cz


More information about the Kernelnewbies mailing list