> The US_FL_FIX_INQUIRY flag tells the usb-storage
> driver not to send INQUIRY commands to the device
> but instead to fake a reply.
 
Thanks, I tried that quick walk thru the source:
http://lxr.linux.no/ident?v=2.5.49&i=US_FL_FIX_INQUIRY
http://lxr.linux.no/source/drivers/usb/storage/usb.c?v=2.5.49#L430
http://lxr.linux.no/ident?v=2.5.49;i=fill_inquiry_response
http://lxr.linux.no/source/drivers/usb/storage/usb.c?v=2.5.49#L246
http://lxr.linux.no/ident?v=2.5.49;i=INQUIRY
http://lxr.linux.no/source/include/scsi/scsi.h?v=2.5.49#L40
 
Looks to me like here, when we have no
US_FL_FIX_INQUIRY, the default TalkLikeWindows
violation is to pass thru op x12 Inquiry other than
the Windows Inquiry of cmdp = x "12 0 0 0 24 0" with
dxfer_len = x24?
 
So far so good?
 
Then why is the fix for this to fabricate op x12
Inquiry data altogether?
 
Why not always pass thru any op x12 Inquiry as a
Windows Inquiry?
 
Why penalise the many devices that talk well with
Windows today, rather than the rare devices that
implement the standard as published?
 
Wouldn't it make sense to have two pass-thru's?
 
One truly transparent pass thru, for apps that do know
what they are doing, but the default heavily filtered
since so many apps can't cope with reality?
 
And how are we going to cope when the 64-bit
motherboards change the Windows Inquiry to be,
perhaps, -x "12 0 0 0 20 0" -i x20 instead?
 
Curiously yours in breathtaking ignorance, Pat LaVarre

        -----Original Message----- 
        From: Alan Stern [mailto:[EMAIL PROTECTED]] 
        Sent: Mon 12/30/2002 9:06 AM 
        To: Jason Bowman; Matthew Dharm 
        Cc: [EMAIL PROTECTED]; USB Storage List 
        Subject: [usb-storage] Re: [linux-usb-devel] Fuji FinePix F401 - patch
        
        

        On Wed, 25 Dec 2002, Jason Bowman wrote:
        
        >
        > Hello all,
        >
        > I've been playing with a Fuji FinePix F401 Digital Camera lately. Under XP 
it
        > connect no-prob as a usb-storage device, but under linux just plugging it in
        > would freeze the entire machine. This was tried with: stock 2.4.18+acpi,
        > Mandrake90 2.4.19, and stock 2.4.20+acpi with the same results. I finally
        > fixed it by applying the patch included below. As you can see I simply
        > modified the entry above it to use '0x0114' instead of '0x0100'.
        >
        > Please update this (or whatever is necesary) so that others don't run into 
the
        > same problem.
        >
        > I am more concerned with why, without this entry, plugging in a usb device
        > would lock my entire machine (esp when it worked in XP).  I believe the
        > problem is related to when the usb-storage device tried to set up scsi
        > emulation. This be because I would monitor /proc/scsi/scsi right before it
        > crashed and an entry would appear but most of the fields would be blank as
        > you can see below:
        >
        > [root@waturu jasonb]# while true; do sleep 1; date; lsusb; cat
        > /proc/scsi/scsi; done
        > Wed Dec 25 18:02:29 EST 2002
        > Bus 002 Device 001: ID 0000:0000
        > Bus 001 Device 001: ID 0000:0000
        > Bus 001 Device 002: ID 04cb:0114 Fuji Photo Film Co., Ltd.
        > Attached devices:
        > Host: scsi0 Channel: 00 Id: 02 Lun: 00
        >   Vendor: MATSHITA Model: UJDA720 DVD/CDRW Rev: 1.00
        >   Type:   CD-ROM                           ANSI SCSI revision: 02
        > Host: scsi1 Channel: 00 Id: 00 Lun: 00
        >   Vendor:          Model:                  Rev:
        >   Type:   <NULL>                ANSI SCSI revision: ffffffff
        >
        >
        > So why did this crash my machine and what can be done to stop it? I am fully
        > willing to jump into the code and try to resolve this issue... thou someone
        > would definitely has to point to in the right direction as I've never done
        > any kernel development before.
        >
        > Thanks,
        > Jason B.
        >
        > -------------------------
        >
        > *** drivers/usb/storage/unusual_devs.h     2002-11-28 18:53:15.000000000 
-0500
        > --- drivers.new/usb/storage/unusual_devs.h      2002-12-25 
17:52:18.000000000
        > -0500
        > ***************
        > *** 100,109 ****
        > --- 100,114 ----
        >   UNUSUAL_DEV(  0x04cb, 0x0100, 0x0000, 0x2210,
        >                 "Fujifilm",
        >                 "FinePix 1400Zoom",
        >                 US_SC_8070, US_PR_CBI, NULL, US_FL_FIX_INQUIRY),
        >
        > + UNUSUAL_DEV(  0x04cb, 0x0114, 0x0000, 0x2210,
        > +                 "Fujifilm",
        > +                 "FinePix F401",
        > +                 US_SC_8070, US_PR_CBI, NULL, US_FL_FIX_INQUIRY),
        > +
        
        You are correct that SCSI emulation triggered the problem you saw.  What's
        going on is that some devices do not respond properly to a SCSI INQUIRY
        command -- maybe they don't respond at all, maybe they give an error,
        maybe they provide bogus data.  The US_FL_FIX_INQUIRY flag tells the
        usb-storage driver not to send INQUIRY commands to the device but instead
        to fake a reply.  The SCSI emulation of course needs to use the INQUIRY
        data to function correctly.
        
        Your comment leads me to wonder if we can't do a better job of detecting
        automatically the devices that need this treatment.  Rather than hanging
        or crashing, we ought to be able to realize when an INQUIRY has failed or
        yielded obviously bad data, and set the US_FL_FIX_INQUIRY flag ourselves.
        Matt, what do you think?
        
        Alan Stern
        
        _______________________________________________
        usb-storage mailing list
        [EMAIL PROTECTED]
        http://www2.one-eyed-alien.net/mailman/listinfo/usb-storage
        

�+,~w�zf��+,��좷�o$�yy�zW(��h�礅�zxm���������&���{����z���+-��.�ǟ����S��칻�&޺ǭ��Z���g�zWZ�m����+-��.�ǟ�����+-��b�ا~��{����z��


Reply via email to