[OpenWrt-Devel] [PATCH fstools] blockd: don't unmount device when removing it from the list

Rafał Miłecki rafal at milecki.pl
Wed Dec 5 07:39:55 EST 2018

On 2018-12-05 13:31, Paul Oranje wrote:
>> Op 4 dec. 2018, om 12:32 heeft Rafał Miłecki <zajec5 at gmail.com> het 
>> volgende geschreven:
>> From: Rafał Miłecki <rafal at milecki.pl>
>> Device gets removed from the list (vlist_delete()) when block calls
>> "hotplug" method of blockd using ubus. Right after that block unmounts
>> that device on its own.
>> blockd shouldn't care about unmounting on its own for following 
>> reasons:
>> 1) To avoid code/behavior duplication with blockThe chicken or the 
>> eggThe chicken or the egg
>> 2) To keep behavior consistent with mounting (blockd doesn't mount)
>> 3) To allow implementing more features in block (e.g. hotplug.d 
>> events)
>> The design should be to:
>> 1) Have block handle (un)mounting
>> 2) Use blockd for providing devices/mounts state (using ubus)
>> 3) Have blockd handle autofs and call block when needed
> Can this cause a transition into a state where a device is (still)
> mounted but removed from the list, and if so, is that a valid, an
> admissible state ? Shouldn't block be required to first unmount before
> calling blockd's hotplug entry ?

The chicken or the egg? ;)

We don't have any mutex/semaphore mechanism in place right now. So
unless that gets implemented, we have to chooce what's better.

I believe the correct order would be to:
1) Stop reporting mounted device
2) Notify all users about unmounting (hotplug.d event I work on)
3) Unmount

That's the safest way that will stop applications from trying to access
device due to blockd incorrectly reporting it as mounted.

openwrt-devel mailing list
openwrt-devel at lists.openwrt.org

More information about the openwrt-devel mailing list