[oi-dev] OI no longer automounts USB sticks

Gary Mills gary_mills at fastmail.fm
Sun Jun 27 18:15:39 UTC 2021


On Sun, Jun 27, 2021 at 01:00:46AM -0700, Joshua M. Clulow wrote:
> 
> OK, so I have looked into this a little bit.  It seems like there is a
> bug in the HAL code we ship, or in the glib that OI is now using, or
> somewhere inbetween.

You've gone much farther than I have.  With some help from you, I've
determined, with a current OI BE, that:

Something failed to notify hald of new USB devices.  Hald failed to
notify the process spawner: hald-runner.  The mount was never done.
In general, we agree.

> With DTrace, I am able to see (in the "hald --daemon=yes" process at
> the top of the HAL process tree) that it receives the appropriate
> sysevents from the kernel when a USB disk is plugged in or removed.

It's good to know that that bit of IPC works as intended.

[...]
> Where things appear to fall down is once we get into the glib area.
> The strings that are written into one end of the pipe by the sysevent
> consumer, as described above, are meant to then be read through a glib
> GIOChannel object in sysevent_iochannel_data():
> 
>     https://github.com/illumos/illumos-gate/blob/master/usr/src/cmd/hal/hald/solaris/sysevent.c#L244-L272
> 
> Though we do enter sysevent_iochannel_data() on schedule for each
> sysevent, it seems like the call to g_io_channel_read_line() always
> returns a value of 3 on my system -- which seems like an EOF?  Because
> the value is not G_IO_STATUS_NORMAL, we don't even try to call
> sscanf() to parse the lines we wrote above.  This means we never call
> into sysevent_dev_add() and thus we never pass the hotplug event on to
> the rest of HAL.

That sounds like the "temporarily unavailable" or the "interrupted
system call" errors for the read() system call in glib.

> I have run out of steam on this for now, but I hope this is enough for
> someone to keep digging.  In particular, it seems like it is worth
> investigating whether glib has been updated in OI at some point
> between when this was last working and now.  Perhaps there is a build
> issue or a bug there.  It doesn't seem like there has been a lot of
> change in the HAL daemon itself (which is in the gate, as linked
> above).

The hal package is rebuilt for OI.  There have been many changes, with
different revision numbers.  For example, in the BE from 2020-11-27
where mounts work, the package is service/hal at 0.5.11-2020.0.1.20171 .
In the BE from 2021-05-14 where mounts do not work, the package is
service/hal at 0.5.11-2020.0.1.20514 .  I assume the revision numbers
do not indicate actual changes.


-- 
-Gary Mills-		-refurb-		-Winnipeg, Manitoba, Canada-



More information about the oi-dev mailing list