Reattach/redetect allways connected umass device - is it possible ?

Vladimir Grebenschikov vova at fbsd.ru
Mon Mar 28 06:06:17 PST 2005


В пн, 28/03/2005 в 15:28 +0200, Bernd Walter пишет:
> On Mon, Mar 28, 2005 at 05:17:24PM +0400, Vladimir Grebenschikov wrote:
> > ? ??, 28/03/2005 ? 15:04 +0200, Bernd Walter ?????:
> > > On Mon, Mar 28, 2005 at 04:58:31PM +0400, Vladimir Grebenschikov wrote:
> > > > ? ??, 28/03/2005 ? 14:13 +0200, Poul-Henning Kamp ?????:
> > > > > In message <20050328114633.GZ14532 at cicely12.cicely.de>, Bernd Walter writes:
> > > > > 
> > > > > >> camcontrol detach da0; camcontrol rescan all 
> > > > > >> helps, but, it should be much better if it will be issued automatically.
> > > > > >
> > > > > >Yes - GEOM seems to ignore media change signals from drives.
> > > > > >I've added PHK to the recipient list - maybe he has an idea about this
> > > > > >problem.
> > > > > 
> > > > > No, GEOM doesn't ignore any such thing, because as far as I know
> > > > > GEOM doesn't get any such thing to ignore in the first place.
> > > > 
> > > > So, let's imagine following situation:
> > > > 
> > > > We get SCSI BUS with removable da device.
> > > > device detected as da0 and not mounted.
> > > > Device disconnected from SCSI bus.
> > > > And finally, another device with different geometry connected with same
> > > > SCIS ID.
> > > 
> > > This ist not a *media* exchange - this is a *device* and in
> > > this case even a scbus exchange.
> > 
> > Ok, so my case is media exchange, not device exchange.
> 
> No - it is a device exchange.
> GEOM only has problems with media exchange.
> A new device is no problem for GEOM.
> Your problem is very likely not GEOM related.

I guess, may bad example messed up discussion. sorry.

>From begin:
  I have USB-connected card-reader (Sony Memory Stick).
  It connected as umass0 (ehci), then as da0.
  It can't be unplugged. (on-board notebook device)

Problem:
  When I change card (it was not mounted) da0 device does not detect
  media change and following mount fails.

Workarounds (I know three at this moment):
  - kldunload umass; kldload umass - the ugliest, will affect other
umass devices.
  - cat /dev/null > /dev/da0  before mount - GEOM hacking 
    (also I do not like do cat into device with data)
  - camcontrol detach da0; camcontrol rescan all - requires CAM patch

So, I am asking about solution, how it is supposed to work, 
I guess, like with CD, there is should not be special exercises after
card change.

Probably my card-read is too stupid to send any media change
notifications, how to test it ?

Another, probably related question, is there way to detect card
insertion/removal ?

> > How it is supposed to work in this case ? 
> 
> You get a new device and all layers are freshly setup.
> That is get's the same device numers as the old is unrelated, it's
> still a new device after all.
> 
> You should see why your disconnect doesn't work.

It is not disconnected physically, just card removed.

> Do you run recent RELENG_5 or -current code?

6-CURRENT.

> Disconnect the device and "ps -axl | grep usb" - you will see the
> usb threads - each host controller has one of them.
> Normaly idle usb threads should wait in usbevt and usbtask should
> wait in usbtsk - see what it is in your case.
-- 
Vladimir B. Grebenchikov
vova at fbsd.ru


More information about the freebsd-mobile mailing list