Dear Alan,

I understood very well except one.
This patch is for which kernel version ?
Should be applied manualy ?

Mybe you're wondering why these questions - cause
I check my mdk kernel and the Latest kernels
from kernel.org up to version 2.6.12-rc4 and in all
of them the file that need a patch (drivers/usb/storage/scsiglue.c)
has differnet older version then Your patch shown here: 

===== drivers/usb/storage/scsiglue.c 1.95 vs edited =====
--- 1.95/drivers/usb/storage/scsiglue.c 2005-02-10 16:22:46 -05:00
+++ edited/drivers/usb/storage/scsiglue.c       2005-02-22 10:50:08 -05:00
@@ -154,6 +154,14 @@
                 * If this device makes that mistake, tell the sd driver. */
                if (us->flags & US_FL_FIX_CAPACITY)
                        sdev->fix_capacity = 1;
+
+               /* Some devices report a SCSI revision level above 2 but are
+                * unable to handle the REPORT LUNS command (for which
+                * support is mandatory at level 3).  Since we already have
+                * a Get-Max-LUN request, we won't lose much by setting the
+                * revision level down to 2.  The only devices that would be
+                * affected are those with sparse LUNs. */
+               sdev->scsi_level = SCSI_2;
        } else {
 
                /* Non-disk-type devices don't need to blacklist any pages

And in all Kernel version this file has version 1.26: 
So my point is:
a) should I insert this part by manual editing this file ?
b) if so how to judge that the kernel is to old for this patch - like You 
suggest
c) if I have my Kernel sources - then maybe I can recompile only the 
usb-storage
     module - if all rest remain intact ?
d) why Your files versions differ from even very last kernels ?

Again thank You very much
for Your kindly answers
and patience

Regards
Artur 


/* Driver for USB Mass Storage compliant devices
 * SCSI layer glue code
 *
 * $Id: scsiglue.c,v 1.26 2002/04/22 03:39:43 mdharm Exp $
 *
 * Current development and maintenance by:
 *   (c) 1999-2002 Matthew Dharm ([EMAIL PROTECTED])
 *
 * Developed with the assistance of:
 *   (c) 2000 David L. Brown, Jr. ([EMAIL PROTECTED])
 *   (c) 2000 Stephen J. Gowdy ([EMAIL PROTECTED])
 *
 * Initial work by:
 *   (c) 1999 Michael Gee ([EMAIL PROTECTED])
 *
 * This driver is based on the 'USB Mass Storage Class' document. This
 * describes in detail the protocol used to communicate with such
 * devices.  Clearly, the designers had SCSI and ATAPI commands in
 * mind when they created this document.  The commands are all very
 * similar to commands in the SCSI-II and ATAPI specifications.
 *
 * It is important to note that in a number of cases this class
 * exhibits class-specific exemptions from the USB specification.
 * Notably the usage of NAK, STALL and ACK differs from the norm, in
 * that they are used to communicate wait, failed and OK on commands.
 *
 * Also, for certain devices, the interrupt endpoint is used to convey
 * status of a command.
 *
 * Please see http://www.one-eyed-alien.net/~mdharm/linux-usb for more
 * information about this driver.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the
 * Free Software Foundation; either version 2, or (at your option) any
 * later version.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 675 Mass Ave, Cambridge, MA 02139, USA.
 */

#include <linux/slab.h>
#include <linux/module.h>

#include <scsi/scsi.h>
#include <scsi/scsi_cmnd.h>
#include <scsi/scsi_devinfo.h>
#include <scsi/scsi_device.h>
#include <scsi/scsi_eh.h>

#include "usb.h"
#include "scsiglue.h"
#include "debug.h"
#include "transport.h"
#include "protocol.h"

/***********************************************************************
 * Host functions 
 ***********************************************************************/

static const char* host_info(struct Scsi_Host *host)
{
        return "SCSI emulation for USB Mass Storage devices";
}

static int slave_alloc (struct scsi_device *sdev)
{
        /*
         * Set the INQUIRY transfer length to 36.  We don't use any of
         * the extra data and many devices choke if asked for more or
         * less than 36 bytes.
         */
        sdev->inquiry_len = 36;
        return 0;
}

static int slave_configure(struct scsi_device *sdev)
{
        struct us_data *us = host_to_us(sdev->host);

        /* Scatter-gather buffers (all but the last) must have a length
         * divisible by the bulk maxpacket size.  Otherwise a data packet
         * would end up being short, causing a premature end to the data
         * transfer.  Since high-speed bulk pipes have a maxpacket size
         * of 512, we'll use that as the scsi device queue's DMA alignment
         * mask.  Guaranteeing proper alignment of the first buffer will
         * have the desired effect because, except at the beginning and
         * the end, scatter-gather buffers follow page boundaries. */
        blk_queue_dma_alignment(sdev->request_queue, (512 - 1));

        /* Set the SCSI level to at least 2.  We'll leave it at 3 if that's
         * what is originally reported.  We need this to avoid confusing
         * the SCSI layer with devices that report 0 or 1, but need 10-byte
         * commands (ala ATAPI devices behind certain bridges, or devices
         * which simply have broken INQUIRY data).
         *
         * NOTE: This means /dev/sg programs (ala cdrecord) will get the
         * actual information.  This seems to be the preference for
         * programs like that.
         *
         * NOTE: This also means that /proc/scsi/scsi and sysfs may report
         * the actual value or the modified one, depending on where the
         * data comes from.
         */
        if (sdev->scsi_level < SCSI_2)
                sdev->scsi_level = SCSI_2;

        /* According to the technical support people at Genesys Logic,
         * devices using their chips have problems transferring more than
         * 32 KB at a time.  In practice people have found that 64 KB
         * works okay and that's what Windows does.  But we'll be
         * conservative; people can always use the sysfs interface to
         * increase max_sectors. */
        if (le16_to_cpu(us->pusb_dev->descriptor.idVendor) == 
USB_VENDOR_ID_GENESYS &&
                        sdev->request_queue->max_sectors > 64)
                blk_queue_max_sectors(sdev->request_queue, 64);



> Dnia wtorek, 17 maja 2005 15:56, Alan Stern napisał:
> On Mon, 16 May 2005, Artur Szymiec wrote:
> > Thank You for answer ..
> > I'm newbie in Linux so should I change this part in my kernel (Mandrake
> > 10.2) source code ? Or where is the latest version avaiable ?
> > Do I need to recompile all kernel with all modules ?
> > Or there is another way - make only moudle usb-storage ?
> >
> > I know - stupid questions .... but I'm newbie ....without windows on my
> > hdd anymore :-)
>
> You can change your Mandrake kernel or get the latest kernel from
> <http://www.kernel.org/pub/linux>.  It's up to you, although if the
> Mandrake kernel is too old then the patch won't apply to it.
>
> If you haven't already compiled a kernel then you will need to recompile
> the entire kernel together with all the modules.  If you have already
> compiled a kernel then you only need to rebuild usb-storage.
>
> Alan Stern
>
>
>
> -------------------------------------------------------
> This SF.Net email is sponsored by Oracle Space Sweepstakes
> Want to be the first software developer in space?
> Enter now for the Oracle Space Sweepstakes!
> http://ads.osdn.com/?ad_id=7412&alloc_id=16344&op=click
> _______________________________________________
> [email protected]
> To unsubscribe, use the last form field at:
> https://lists.sourceforge.net/lists/listinfo/linux-usb-users


-------------------------------------------------------
This SF.Net email is sponsored by Oracle Space Sweepstakes
Want to be the first software developer in space?
Enter now for the Oracle Space Sweepstakes!
http://ads.osdn.com/?ad_idt12&alloc_id344&op=click
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-users

Reply via email to