Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Failed to create dm device: Device or resource busy error if previous update process is terminated #1676

@HiFiPhile

Description

@HiFiPhile

Describe the bug
If rauc install process is terminated, the next run will fail with the following error:

(rauc:799): rauc-WARNING **: 19:53:51.711: Failed mounting bundle: Failed to create dm device: Device or resource busy
Failed mounting bundle: Failed to create dm device: Device or resource busy

Background information

  • rauc 1.13
  • Yocto Scarthgap
  • Service is disabled
  • SAM9X60 (ARM9) CPU
  • Rootfs is ubifs on NAND

I'm trying to integrate rauc into our existing system to replace our own OTA utils. I need to develop pre/post install handlers to mount/umount ubi volumes, since doing a full upgrade is time consuming I pressed ctrl+c in the middle and rauc entered a blocking state.

Reading dm.c, I think a handler should be added to clean up dangling rauc-verity-bundle mapping in r_dm_setup().
The clean up is to umount dangling bundle mount, once bundle is unmounted /dev/dm-0 will be freed.

/dev/dm-0 on /run/rauc/bundle type squashfs (ro,nosuid,nodev,relatime,errors=continue)

To Reproduce
Steps to reproduce the behavior:

  1. Run 1st install rauc install --override-boot-slot=a -d http://192.168.8.1:8080/bundle.raucb
  2. Press Ctrl+C in the process
  3. Relaunch the install
    Expected behavior
    A clear and concise description of what you expected to happen.

Logs

rauc-Message: 19:53:51.157: Remote URI detected, streaming bundle...
rauc-nbd-Message: 19:53:51.157: starting the nbd server
rauc-nbd-Message: 19:53:51.201: sending config request to nbd server: {'url': <'http://192.168.8.1:8080/bundle-dev.raucb'>, 'info-headers': <@as []>}
rauc-nbd-Message: 19:53:51.378: nbd server running as UID 65534, GID 65534
rauc-nbd-Message: 19:53:51.415: nbd server received configuration: {'url': <'http://192.168.8.1:8080/bundle-dev.raucb'>, 'info-headers': <@as []>}
rauc-nbd-Message: 19:53:51.416: nbd server configuring for URL: http://192.168.8.1:8080/bundle-dev.raucb
rauc-nbd-Message: 19:53:51.426: nbd server received HTTP server date 1743105198
rauc-nbd-Message: 19:53:51.428: nbd server received total size 36374418
rauc-nbd-Message: 19:53:51.428: nbd server received HTTP file date 1743094843

(process:801): rauc-nbd-WARNING **: 19:53:51.430: using HTTP/1 for streaming, expect slow installation; enable HTTP/2 if possible
rauc-nbd-Message: 19:53:51.433: received HTTP server info: total size 36.4?MB (36374418 bytes)
rauc-nbd-Message: 19:53:51.435: received HTTP server info: current time 2025-03-27 19:53:18 (1743105198)
rauc-nbd-Message: 19:53:51.435: received HTTP server info: modified time 2025-03-27 17:00:43 (1743094843)
rauc-nbd-Message: 19:53:51.436: the nbd server was started
rauc-Message: 19:53:51.436: Reading bundle: http://192.168.8.1:8080/bundle-dev.raucb
(rauc:799): rauc-DEBUG: 19:53:51.487: Found valid CMS data
rauc-Message: 19:53:51.501: Verifying bundle signature...
 10% Verifying signature
: detected capacity change from 0 to 71040
rauc-Message: 19:53:51.531: Verified inline signature by 'O = Test Org, CN = Test Org Development-1'
 20% Verifying signature done.
(rauc:799): rauc-DEBUG: 19:53:51.538: Got 2 elements for trust chain
 20% Checking bundle done.
rauc-Message: 19:53:51.542: Mounting bundle 'http://192.168.8.1:8080/bundle-dev.raucb' to '/run/rauc/bundle'
rauc-nbd-Message: 19:53:51.543: configuring nbd device
CONNECT
block nbd1: Disconnected due to user request.
block nbd1: shutting down sockets
rauc-nbd-Message: 19:53:51.576: setup done for /dev/nbd1
 20% Checking manifest contents
 30% Checking manifest contents done.
rauc-event-Message: 19:53:51.587: Installation d8084824 failed: Failed mounting bundle: Failed to create dm device: Device or resource busy
100% Installing failed.
rauc-nbd-Message: 19:53:51.588: Removing nbd device /dev/nbd1
0x0 phys_seg 1 prio class 2
Buffer I/O error on dev nbd1, logical block 0, async page read
 nbd1: unable to read partition table
rauc-nbd-Message: 19:53:51.652: stopping the nbd server
rauc-nbd-Message: 19:53:51.653: nbd server received disconnect request
rauc-Message: 19:53:51.654: nbd dl_size: count=4 sum=6038.000 min=4.000 max=4096.000 avg=1509.500 recent-avg=1509.500
rauc-Message: 19:53:51.655: nbd dl_speed: count=4 sum=1208056.000 min=327.000 max=769346.000 avg=302014.000 recent-avg=302014.000
rauc-Message: 19:53:51.655: nbd namelookup: count=4 sum=0.008 min=0.001 max=0.006 avg=0.002 recent-avg=0.002
rauc-Message: 19:53:51.656: nbd connect: count=4 sum=0.014 min=0.002 max=0.008 avg=0.003 recent-avg=0.003
rauc-Message: 19:53:51.657: nbd starttransfer: count=4 sum=0.022 min=0.004 max=0.009 avg=0.006 recent-avg=0.006
rauc-Message: 19:53:51.657: nbd total: count=4 sum=0.026 min=0.004 max=0.012 avg=0.007 recent-avg=0.007
rauc-nbd-Message: 19:53:51.658: downloaded 0.0% of the full bundle
rauc-nbd-Message: 19:53:51.659: nbd server exiting
rauc-nbd-Message: 19:53:51.709: the nbd server was stopped

(rauc:799): rauc-WARNING **: 19:53:51.711: Failed mounting bundle: Failed to create dm device: Device or resource busy
Failed mounting bundle: Failed to create dm device: Device or resource busy
finished

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions