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