Re: Hot-plugging microSD on Raspberry Pi under FreeBSD

From: bob prohaska <fbsd_at_www.zefox.net>
Date: Sun, 26 Dec 2021 22:47:09 UTC
On Sun, Dec 26, 2021 at 01:00:38PM -0800, Mark Millard via freebsd-arm wrote:
> On 2021-Dec-26, at 11:23, bob prohaska <fbsd@www.zefox.net> wrote:
> 
> > 
> > Obviously filesystems have to be gracefully unmounted, but is
> > that all? Can the kernel be "aware" of an unused device and
> > get confused if it goes away?
> 
> As I remember, for FreeBSD,
> 
> A) The built-in microsd card slot works fine for swapping
>    media that are not mounted at the time.

Ok, that's reassuring. I observed corruption of microSD card FAT 
partitionss and wondered if hot-plugging might be the cause.

> 
> but, for example (no mounts involved, RPi4B 8GiByte test context),
> 
> B.0) Plug-in the USB reader, no media present. (USB3 example here.)
> B.1) Insert a 128 GiByte media to the reader.
> B.2) Remove that media.
> B.3) Insert a 32 GiByte media to the reader
>      (same slot in the reader).
> 
> Result:
> 
> (da4:umass-sim1:1:0:3): READ(10). CDB: 28 00 0e e2 af ff 00 00 01 00 

[...disk errors snipped....]

Was the Pi4 running from a USB hard disk?

I ask because plugging in a USB reader to my RasPiOS Pi4 while booted 
from a USB hard disk seems to disrupt communication with the boot drive. 
It doesn't crash immediately but can't be gracefully rebooted.

> If you do the 32 GiByte first instead, then for the 128 GiByte you
> get notices from GEOM_PART about "was automatically resized"
> but it does not "address out of range".

That seems like the "confusion" I was wondering about. The kernel
notices the first card insertion, fails to notice the removal and
then mis-attributes the change to a partition resize.


> I expect that swapping two media of the same capacity would
> be less likely to generate any messages, but that does not
> mean that such a swap would be handled fully correctly.
> 
> So I unplug the whole reader to swap media. This is messier
> if multiple slots are in use (more unmounts and later
> remounts).

That chain of events crashes my RasPiOS Pi4, at least when it's also
booted from a USB drive. 

Thanks for writing!

bob prohaska